Hi Chintan, Version fields may be of the following types: int, Integer, short, Short, long, Long, java.sql.Timestamp.
Based on your previous email the MSSQL timestamp should be mapped to a byte[] which won't work as a version column. If the JDBC driver can map a timestamp to one of the types listed above it should work. If not I'm afraid the answer is no. At least for now. -mike On Tue, Apr 12, 2011 at 7:20 PM, chintan4181 <[email protected]> wrote: > Hi, > > In my sql server 2005 database schema, all tables have one column with > "timestamp" dataType. When I generate entity out of it, Java maps that > column with java.sql.TimeStamp dataType. but when I retrieve entity using > JPA, i am getting below error. > > 2 PDT] 00000044 SystemErr R Caused by: > com.microsoft.sqlserver.jdbc.SQLServerException: The conversion from > timestamp to TIMESTAMP is unsupported. > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > com.microsoft.sqlserver.jdbc.DataTypes.throwConversionError(DataTypes.java:1117) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > com.microsoft.sqlserver.jdbc.ServerDTVImpl.getValue(dtv.java:2419) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > com.microsoft.sqlserver.jdbc.DTV.getValue(dtv.java:176) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > com.microsoft.sqlserver.jdbc.Column.getValue(Column.java:113) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:1981) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:1966) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > com.microsoft.sqlserver.jdbc.SQLServerResultSet.getTimestamp(SQLServerResultSet.java:2367) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:2613) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:189) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:871) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.sql.ResultSetResult.getTimestampInternal(ResultSetResult.java:485) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:439) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:691) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.meta.strats.ColumnVersionStrategy.populateFromResult(ColumnVersionStrategy.java:336) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.meta.strats.ColumnVersionStrategy.load(ColumnVersionStrategy.java:269) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > org.apache.openjpa.jdbc.meta.Version.load(Version.java:343) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1103) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1076) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:447) > [4/12/11 16:16:59:642 PDT] 00000044 SystemErr R at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:342) > > I am using Microsoft SQL Server JDBC Driver 3.0. and driver documentation > says that > Note: > The SQL Server timestamp type is a fixed-length binary-string type. It does > not map to any of the JDBC time types: DATE, TIME, or TIMESTAMP. > > And I want to make "timestamp" column as a @version column to implement > Optimistic locking. since it is existing database i can not add new column > with int dataType for versioning. > > Is there a way to use sql server "timestamp" type as @version column in > JPA/OpenJPA? > > Thanks > Chintan > > > > > -- > View this message in context: > http://openjpa.208410.n2.nabble.com/Version-for-sqlserver-timpstamp-datatype-tp6267241p6267241.html > Sent from the OpenJPA Users mailing list archive at Nabble.com. >
