Re: how to map unsigned bigint in MySql to long value

2005-11-01 Thread Siming Weng
A defected connector/j 3.1.4 beta is used when the project is
initially created. It failed to map unsigned bigint to
java.math.BigInteger. Thanks a lot for your assistance.

On 10/28/05, Jeff Butler [EMAIL PROTECTED] wrote:
 I've tried your exact example (as close as I can replicate), and don't have
 any errors - and the values comes back as expected.  MySql returns a Long
 for signed bigint fields, and a BigInteger for unsigned bigint fields.

 If your database field is unsigned, then you must set the type in your POJO
 to Object and cast it yourself to BigInteger.  If the database field is
 signed, then either Long or long will work.  I did get a weird result when I
 tried the Long/unsigned combination (as expected - there is a loss of
 precision in that case).

 I tried it with MySQL 5.0.15, and connector/j 3.1.11.

 HTH -
 Jeff Butler

 On 10/26/05, Siming Weng [EMAIL PROTECTED] wrote:
  Hi,
 
  The problem still exists. Here's my situation:
 
  I have a field in table in MySQL, unsigned bigint(20) time_stamp
  I have a result class which has a member private long timeStamp
 
  ...
  result property=timeStamp column=time_stamp/
  ...
 
  the value in database is 1428387426 whose binary format is
  1010101001000110111011001100010
 
  the value in my result class is 7094897110947987456 whose binary
  format is
 1100010011101100010001101010101
 
  if I changed time_stamp to unsigned, it works fine. I've even tried
  private Object timeStamp but the runtime class of timeStamp is still
  java.lang.Long.
 
  Is it an issue of iBatis?
 
  On 10/26/05, Jeff Butler [EMAIL PROTECTED]  wrote:
   iBATIS does not have a type handler for BigInteger - because there is no
   getBigInteger() method on a result set.  iBATIS will call getObject()
 if
   it doesn't know what the data type is ( i.e. if you use a Map as a
 result, or
   if the property in your result class is of type Object) - then you could
   cast it yourself.  This will mimic what you are doing in JDBC.
  
   Jeff Butler
  
  
   On 10/26/05, Siming Weng [EMAIL PROTECTED]  wrote:
Hi,
   
I'm trying to map a table field of unsigned bigint to long value in
java. But it always give wrong numbers looks like being overflow. Pure
JDBC code can return the correct value.
   
JDBC documenation says RecordSet.getObject(int columnIndex) will
return a java.math.BigInteger if the field is unsigned bigint. But it
seems iBatis doesn't support BigInteger.
   
did anyone experience the same problem?
   
Cheers,
   
Simon
   
  
  
 




Re: how to map unsigned bigint in MySql to long value

2005-10-26 Thread Siming Weng
I'll have a go later. Thank you for the quick response.

On 10/26/05, Jeff Butler [EMAIL PROTECTED] wrote:
 iBATIS does not have a type handler for BigInteger - because there is no
 getBigInteger() method on a result set.  iBATIS will call getObject() if
 it doesn't know what the data type is (i.e. if you use a Map as a result, or
 if the property in your result class is of type Object) - then you could
 cast it yourself.  This will mimic what you are doing in JDBC.

 Jeff Butler


 On 10/26/05, Siming Weng [EMAIL PROTECTED]  wrote:
  Hi,
 
  I'm trying to map a table field of unsigned bigint to long value in
  java. But it always give wrong numbers looks like being overflow. Pure
  JDBC code can return the correct value.
 
  JDBC documenation says RecordSet.getObject(int columnIndex) will
  return a java.math.BigInteger if the field is unsigned bigint. But it
  seems iBatis doesn't support BigInteger.
 
  did anyone experience the same problem?
 
  Cheers,
 
  Simon