如何使用JPA将SQLServer2008日期读入Java

如何使用JPA将SQLServer2008日期读入Java,java,sql-server-2005,hibernate,jpa,axis2,Java,Sql Server 2005,Hibernate,Jpa,Axis2,我需要使用java.util.Calendar,以便Axis2 webservice客户端发送/接收日期对象。因此,在我的JPA模型对象中,我将所有java.sql.Date更改为java.util.Calendar。通过使用java.util.Calendar,Axis2 Web服务部件可以正常工作 我能够将java.util.Calendar对象保存到数据库中。问题是我无法从数据库中读回对象 尝试从SQL Server 2008读取保存的对象时,出现以下错误: An error occurr

我需要使用java.util.Calendar,以便Axis2 webservice客户端发送/接收日期对象。因此,在我的JPA模型对象中,我将所有java.sql.Date更改为java.util.Calendar。通过使用java.util.Calendar,Axis2 Web服务部件可以正常工作

我能够将java.util.Calendar对象保存到数据库中。问题是我无法从数据库中读回对象

尝试从SQL Server 2008读取保存的对象时,出现以下错误:

An error occurred while converting the nvarchar value to JDBC data type TIMESTAMP.
在数据库中,无法读取的日期字段类型为“日期”。另外,如果在数据库中,我将日期字段改为“datetime”,它可以正常工作,但我必须使用“date”类型。有人知道如何解决这个问题吗

因此,在我的JPA模型对象中,我将所有java.sql.Date更改为java.util.Calendar

无论如何,在域对象中使用
java.sql.Date
并不是一个好主意

在数据库中,无法读取的日期字段类型为“日期”。另外,如果在数据库中,我将日期字段改为“datetime”,它可以正常工作,但我必须使用“date”类型。有人知道如何解决这个问题吗

可能您的
日历
没有正确注释,请按如下方式更改:

@Temporal(TemporalType.DATE) 
private java.util.Calendar someDate;
以下是JPA 1.0规范的相关章节:

9.1.20时间注释 时间注释必须是 为持久性字段或 类型为
java.util.Date
java.util.Calendar
。可能只是 必须为字段或属性指定 这些类型的

可以使用
时态
注释 与
基本
注释

TemporalType
enum定义 这些时态类型的映射

public enum TemporalType {
    DATE, //java.sql.Date
    TIME, //java.sql.Time
    TIMESTAMP //java.sql.Timestamp
}

工具书类
  • JPA1.0规范
    • 第9.1.20节“时间注释”

我不知道那个日历注释。谢谢。@Markinio不客气。但它不是特定于日历的注释。我将添加对规范的引用。这对JPA2.0和MS SQL Server 2012不有用。无法识别时间类型日期。