Re: [OJB-developers] Detecting and mapping null Integer values
Brought to you by:
thma
From: Jakob B. <jbr...@ho...> - 2002-02-14 16:55:11
|
hi, i experimented with mySql. they do not have a real boolean, so when using rs.getObject() the result is either a Byte or a String leading to an exception in PersistentField::set(). when using getBoolean() the driver converts the string ('f' in this case) to a Boolean (false). jakob ----- Original Message ----- From: "Mahler Thomas" <tho...@it...> To: "'Darren Syzling'" <Dar...@cw...>; <obj...@li...> Sent: Thursday, February 14, 2002 12:16 PM Subject: AW: [OJB-developers] Detecting and mapping null Integer values Hi all, I prefer the wasNull() solution as getObject() is Problematic with several JDBC drivers... I will put this on my todo list ! thanks, Thomas > -----Ursprüngliche Nachricht----- > Von: Darren Syzling [mailto:Dar...@cw...] > Gesendet: Donnerstag, 14. Februar 2002 10:45 > An: obj...@li...; > tho...@ho... > Betreff: Re: [OJB-developers] Detecting and mapping null > Integer values > > > It appears to me there are two choices: > > - wasNull > > - getObject using a cast, is there any reason this wouldn't > work ? For example: > > case Types.INTEGER : > { > result = (Integer)rs.getObject(columnId); > break; > } > > getObject will return a null reference if the column value is null. > > > > Darren > > > > |--------+-----------------------> > | | "Jakob | > | | Braeuchi" | > | | <jbraeuchi@ho| > | | tmail.com> | > | | | > | | 02/13/02 | > | | 07:44 PM | > | | | > |--------+-----------------------> > > >------------------------------------------------------------- > ---------------| > | > | > | To: "Thomas Mahler" > <tho...@ho...>, Darren | > | Syzling/London/CWB@CWB > | > | cc: > obj...@li... | > | Subject: Re: [OJB-developers] Detecting and > mapping null Integer | > | values > | > > >------------------------------------------------------------- > ---------------| > > > > > hi thomas, > > what about using wasNull of ResultSet ? > > /** > * Reports whether > * the last column read had a value of SQL <code>NULL</code>. > * Note that you must first call one of the <code>getXXX</code> methods > * on a column to try to read its value and then call > * the method <code>wasNull</code> to see if the value read was > * SQL <code>NULL</code>. > * > * @return <code>true</code> if the last column value read was SQL > * <code>NULL</code> and <code>false</code> otherwise > * @exception SQLException if a database access error occurs > */ > boolean wasNull() throws SQLException; > > hth jakob > > ----- Original Message ----- > From: "Thomas Mahler" <tho...@ho...> > To: "Darren Syzling" <Dar...@cw...> > Cc: <obj...@li...> > Sent: Wednesday, February 13, 2002 8:09 PM > Subject: Re: [OJB-developers] Detecting and mapping null > Integer values > > > > Hi Darren, > > > > Darren Syzling wrote: > > > > > How can I detect null values for Integer, Long, Double > etc Java class > attributes > > > ? Let's say we're mapping an object which has the > following attributes: > > > > > > class Test > > > { > > > Integer id; > > > String name; > > > Integer sales; > > > } > > > > > > > > > Let's assume that both name and sales can be null. When > retrieving this > object > > > from the database using the PersistenceBroker the String > reference will > be null > > > but the sales reference will in fact refer to an Integer > object with a > zero > > > value. If zero is within the valid range how can we > detect that the > value is > > > actually null. > > > > > > This appears to boil down to: > JdbcAccess.getObjectFromColumn. The code > to > > > convert a string looks like: > > > > > > case Types.VARCHAR: > > > result = rs.getString(columnId); > > > break; > > > > > > If the string value is null getString will return a null > reference. But > for > > > Integer (and other classes) the following is used: > > > > > > case Types.INTEGER: > > > result = new Integer(rs.getInt(columnId)); > > > break; > > > > > > > > > > > I get your point. But: how should the above code look like to handle > > your problem correctly? I have no idea. > > If you (or somebody else) tell me how this section should > look like I > > will change it! > > > > > > java.sql.ResultSet does not tell you that a column is NULL. It just > > returns a 0. Of course this is wrong. But SUN specified it this way. > > Or am I missing something? From the java.sql.ResultSet Source: > > > > /** > > * Gets the value of the designated column in the current row > > * of this <code>ResultSet</code> object as > > * an <code>int</code> in the Java programming language. > > * > > * @param columnIndex the first column is 1, the > second is 2, ... > > * @return the column value; if the value is SQL > <code>NULL</code>, > > * the value returned is <code>0</code> > > * @exception SQLException if a database access error occurs > > */ > > int getInt(int columnIndex) throws SQLException; > > > > > > > getInt will return 0 for null and the an integer will be > created with a > zero > > > value. > > > > > > The Conversion Strategy stuff appears too late in the day > to make the > > > conversion. > > > > > > You are right, things are already on the wrong track at > this point.... > > > > How is everybody else handling this or have I missed something ? > > > > > > cu, > > > > Thomas > > > > > > > > > > > > > Thanks > > > Darren > > > > > > > > > > > > > ************************************************************** > ************** > ************************************************************** > ************ > > > This e-mail has been prepared using information believed by the > author to be > > > reliable and accurate, but Thales Information Systems > Finance makes no > > > warranty as to accuracy or completeness. In particular Thales > Information > > > Systems Finance does not accept responsibility for > changes made to > this > > > e-mail after it was sent. Any opinions expressed in > this document are > those of > > > the author and do not necessarily reflect the opinions > of the company > or its > > > affiliates. They may be subject to change without notice. > > > This e-mail, its content and any files transmitted with it are > intended > > > solely for the addressee(s) and may be legally privileged > and/or > > > confidential. Access by any other party is unauthorised > without the > express > > > written permission of the sender. If you have received > this e-mail in > error you > > > may not copy or use the contents, attachments or > information in any > way. > > > Please destroy it and contact the sender via the Thales > Information > Systems > > > Finance switchboard in London at +44 (0) 20 7650 0100 or > via e-mail > return. > > > This message and any attachments have been scanned > > > for viruses prior to leaving the originators network. The > originator > does not > > > guarantee the security of this message and will not be > responsible for > any > > > damages arising from any alteration of this message by a > third party or > as a > > > result of any virus being passed on. > > > > ************************************************************** > ************** > ************************************************************** > ************* > > > > > > > > > > > > _______________________________________________ > > > Objectbridge-developers mailing list > > > Obj...@li... > > > https://lists.sourceforge.net/lists/listinfo/objectbridge-developers > > > > > > > > > > > > > _______________________________________________ > Objectbridge-developers mailing list > Obj...@li... > https://lists.sourceforge.net/lists/listinfo/objectbridge-developers > _______________________________________________ Objectbridge-developers mailing list Obj...@li... https://lists.sourceforge.net/lists/listinfo/objectbridge-developers _______________________________________________ Objectbridge-developers mailing list Obj...@li... https://lists.sourceforge.net/lists/listinfo/objectbridge-developers _______________________________________________ Objectbridge-developers mailing list Obj...@li... https://lists.sourceforge.net/lists/listinfo/objectbridge-developers |