java - JPA 和公历

标签 java jpa orm jpa-2.0

JPA 1.0 是否支持 GregorianCalendar 的映射?我没有在 JPA 1.0 的映射文件规范中找到任何关于 GregorianCalendar 的内容。 JPA 2.0 怎么样?

最佳答案

JPA 确实支持 java.util.Calendar 及其子类。唯一需要注意的是,您必须使用 @Temporal 注释来指示该字段在数据库中的存储方式。规范的两个版本都有此要求,这是 JPA 2.0 规范的部分:

11.1.47 时间注释

必须为类型的持久字段或属性指定 Temporal 注解 java.util.Date 和 java.util.Calendar。它只能指定用于字段或属性 这些类型。

Temporal 注释可以与 Basic 注释、Id 注释或 ElementCollection[111] 注释结合使用(当元素集合值属于此类时间类型时)。

TemporalType 枚举定义了这些时间类型的映射。

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

否则您不需要做任何特别的事情。您的实体可能看起来像这样:

@Entity 
public class Person { 
    // . . .

    @Temporal(TemporalType.TIMESTAMP)
    private GregorianCalendar lastUpdated;

    // . . .
}

关于java - JPA 和公历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283871/

相关文章:

java - 为什么在 Tomcat 和独立运行时 Spring 不注入(inject) @PersistenceContext entityManager

SQL & Website - 如何优化网站

php - 使用 Bisna/Doctrine2 处理关闭的 EntityManager

java - JasperReports 服务器 : How to export report as html file using url

java - 为什么更改 WEB-INF/web.xml 不会导致 tomcat 重新加载上下文?

java - where 子句中的子查询与 CriteriaQuery

java - Hibernate子类id在每个子类的表中生成

java - 什么是NullPointerException,我该如何解决?

java - Apache poi - 条形图设置左轴的最小值和最大值

java - 在数据库中存储由 Java 中的 List 表示的 'large' 数据的最佳实践是什么?