[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1936?page=c...
]
Dan commented on HHH-1936:
--------------------------
Leave the field a Long and use the @Type hibernate annotation like this:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Type(type = "com.foo.util.SybaseIdentityType")
@Column(name = "iIdCon")
private Long id;
Here is the src for com.foo.util.SybaseIdentityType:
package com.foo.util;
import java.math.*;
import java.sql.*;
import org.hibernate.HibernateException;
import org.hibernate.type.LongType;
public class SybaseIdentityType extends LongType {
private static final long serialVersionUID = 1L;
public void set(PreparedStatement st, Object value, int index)
throws HibernateException, SQLException {
st.setBigDecimal(index, new BigDecimal(BigInteger
.valueOf(((Long) value).longValue())));
}
public int sqlType() {
return Types.NUMERIC;
}
}
IdentityGenerator doesn't support BigInteger as a valid identity
type.
----------------------------------------------------------------------
Key: HHH-1936
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1936
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.0.5
Environment: Hibernate 3.0.5, Sybase 12.05, Window/ Unix
Reporter: Leonid Shtivelman
Identity generator strategy doesn't support BigInteger as a valid id type. This
causes problem with Sybase which requires identity column to be numeric. It would seem an
obvious way to get around this problem is to set column mapping to long in hibernate xml
and the actual java object. This will solve obvious problem of creating identity, but
will cause performance problem on selection. In order for Sybase to use index for
parameter query the variable type of the parameter and column index type has to be the
same. If ones maps column type to Long, Hibernate will use JDBC method setLong(long) to
set value in the prepared statement. This will cause mismatch between parameter type and
column index type, and Sybase will not use index to locate index. As you can see this is
a big problem for anyone that is using identity columns Sybase and Hibernate
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira