openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dick <michael.d.d...@gmail.com>
Subject Re: @Version for sqlserver "timpstamp" datatype
Date Wed, 13 Apr 2011 02:51:21 GMT
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 <chintan4181@gmail.com> 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.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message