Kevin                                                              
                                         
                    Lanaghan             To:     [EMAIL PROTECTED]                 
                                         
                                         cc:                                           
                                         
                    11/21/2001           Subject:     integer                          
                                         
                    03:11 PM                                                           
                                         
                                                                                       
                                         
                                                                                       
                                         






Hey guys, I found what may be a bug

When the value of a INTEGER field in an Oracle record has no value Castor
throws an exception when attempting to iterate through the QueryResults.
The field below which was causing the problem was VERSION.  When this field
was set to zero in the oracle table things worked.  When it was null the
exception referenced above was thrown.  The work around was basically not
to use INTEGER fields in oracle.  The version field will be used for
optimistic locking.  Oracles DATE field only has resolution to the second
which isn't sufficient for optimistic locking.


***** this doesn't work.  Null pointer exception is thrown while
enumerating through the result set
CREATE TABLE ED_BEDS(
 ID                      INTEGER NOT NULL,
 VERSION                                           INTEGER,,
 BED_NUMBER              VARCHAR2(10) NOT NULL,
 BED_STATUS                              VARCHAR2(10),
 BED_TYPE                                      VARCHAR2(10) NOT NULL,
 TYPE                                         VARCHAR2(10) NOT NULL,
 SORT_ORDER                                        NUMBER(2) NOT NULL,
 UNIT                         VARCHAR(10),
PRIMARY KEY(ID)
);


***** this however does.  Null pointer exception is thrown while
enumerating through the result set
create table ED_BEDS(
 ID                      number(38,0) NOT NULL,
 VERSION                                           number(38,0),
 BED_NUMBER              VARCHAR2(10) NOT NULL,
 BED_STATUS                              VARCHAR2(10),
 BED_TYPE                                      VARCHAR2(10) NOT NULL,
 TYPE                                         VARCHAR2(10) NOT NULL,
 SORT_ORDER                                        NUMBER(2) NOT NULL,
 UNIT                         VARCHAR(10),
PRIMARY KEY(ID)
);

<class name="vanderbilt.ed.beds.EDBedRec" identity="id" access="db-locked">
    <map-to table="ED_BEDS" xml="group"/>
    <cache-type type="none"/>
    <field name="id" type="long" >
      <sql name="ID" type="integer"/>
    </field>
    <field name="version" type="long">
      <sql name="VERSION" type="integer" dirty="check" />
    </field>
    <field name="bedNumber" type="string">
      <sql name="BED_NUMBER" type="varchar" dirty="check" />
    </field>
    <field name="bedType" type="string">
      <sql name="BED_TYPE" type="varchar" dirty="check" />
    </field>
    <field name="type" type="string">
      <sql name="TYPE" type="varchar" dirty="check" />
    </field>
    <field name="bedStatus" type="string">
      <sql name="BED_STATUS" type="varchar" dirty="check" />
    </field>
    <field name="sortOrder" type="integer">
      <sql name="SORT_ORDER" type="integer" dirty="check" />
    </field>
 </class>


  {
       try
       {

          EDBedRec rec;
          List list = new Vector(40);
          System.out.println("**************** Getting Beds
*****************************" + EDBedDAO.AVAILABLE_ROOMS_QUERY);
          PrintWriter writer = new Logger( System.out ).setPrefix( "test"
);

//          OQLQuery oql = _db.getOQLQuery(
EDBedDAO.AVAILABLE_ROOMS_QUERY);
          OQLQuery oql = _db.getOQLQuery("SELECT p FROM
vanderbilt.ed.beds.EDBedRec p where p.bedStatus = $1 order by
p.sortOrder");
          oql.bind("AVL");
        _db.begin();
          QueryResults results;


          results = oql.execute(Database.ReadOnly);

          System.out.println("*** ROOMS OQL EXECUTE COMPLETE.  BEGIN
ITERATION *********************************");
          int i = 0;
          while(results.hasMoreElements())
          {
           System.out.println("$$$$$$$$$$$$$$$ inside beds while loop
################# ");
            rec= (EDBedRec)results.next();
            System.out.println(rec.toString());
            System.out.println("************ ITERATION:  " + i++ );
            list.add(rec);
           }
           if(list.isEmpty())
              System.out.println("@@@@@@@@@@@@@@ NO ROOM DATA
@@@@@@@@@@@@@@@@@@@@@@@");
          _db.commit();
          _db.close();
           return list;
        } catch(ObjectNotFoundException e) {
            System.out.println("no bed data " +e.toString());
        } catch(Exception e) {
              System.out.println("@@@@@@@@@@@  EDWhiteboardDAO: blew up at
hasMoreElements @@@@@@@@@@@@@@@2 " +e.toString() );
              e.printStackTrace();
              throw e;
        }
      System.out.println("success");
      return null;
    }

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to