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