2016-08-15 7 views
0

これは私のマッピングです。jTDSがSQL Server datetimeをjava.sql.Timestampに変換できないのはなぜですか?

@Column(name = "someDateTime") // which is `datetime` in SQL Server table 
public java.sql.Timestamp getSomeDateTime() { 
    return someDateTime; 
} 

URL is spring.datasource.url=jdbc:jtds:sqlserver://myUrl:1433/bizproj;socketTimeout=21600 

私はのjTDS 1.3.1を使用してSQL Serverとの接続に春ブーツ1.4と一緒に5.0.9を休止しています。

のSQL Serverから

Caused by: java.sql.SQLException: Value 2009-02-25 07:51:54.2730000 +00:00 cannot be converted to TIMESTAMP. 
    at net.sourceforge.jtds.jdbc.Support.convert(Support.java:516) ~[jtds-1.3.1.jar:1.3.1] 
    at net.sourceforge.jtds.jdbc.JtdsResultSet.getTimestamp(JtdsResultSet.java:1182) ~[jtds-1.3.1.jar:1.3.1] 
    at net.sourceforge.jtds.jdbc.JtdsResultSet.getTimestamp(JtdsResultSet.java:1334) ~[jtds-1.3.1.jar:1.3.1] 
    at org.hibernate.type.descriptor.sql.TimestampTypeDescriptor$2.doExtract(TimestampTypeDescriptor.java:76) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:238) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:234) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:224) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:300) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2727) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1729) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1655) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.loader.Loader.getRow(Loader.java:1544) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:727) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 

をコンテンツのロード中に、私は、データベース内のその列と行の値が2009-02-25 07:51:54.273

である私はおそらく何かが欠けているが、私は次のようなエラーに実行していますよ何らかの調査の後でもそれを理解することはできません。私はjoda-timeとjadiraを試しましたが、例外は変わりませんでした。どんな指針も大変ありがとうございます。

答えて

0

値2009-02-25 07:51:54.2730000 +00:00はTIMESTAMPに変換できません。

日付/時刻の値の末尾にあるタイムゾーンオフセット+00:00に注目してください。これは、質問に記載されているように、SQL Serverの列がほぼdatetimeoffsetであり、datetimeではないことを示しています。

datetimeoffset値はのjTDSを使用しての作業の詳細については、関連する質問を参照してください。

using the datetimeoffset datatype with jTDS

関連する問題