首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA和GregorianCalendar

JPA和GregorianCalendar
EN

Stack Overflow用户
提问于 2010-07-20 02:25:14
回答 4查看 16.3K关注 0票数 5

JPA1.0是否支持GregorianCalendar映射?我在JPA1.0的映射文件规范中没有找到任何关于GregorianCalendar的东西。那么JPA 2.0呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-20 07:39:23

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

11.1.47时态标注

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

时间注释可以与基本注释、Id注释或ElementCollection111注释结合使用(当元素集合值是这样的时间类型时)。

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

代码语言:javascript
复制
public enum TemporalType {
DATE, //java.sql.Date
TIME, //java.sql.Time
TIMESTAMP //java.sql.Timestamp
}

否则,您不需要做任何特殊的事情。您的实体可能如下所示:

代码语言:javascript
复制
@Entity 
public class Person { 
    // . . .

    @Temporal(TemporalType.TIMESTAMP)
    private GregorianCalendar lastUpdated;

    // . . .
}
票数 18
EN

Stack Overflow用户

发布于 2010-07-20 03:43:17

JPA允许映射java.util.Calendar (及其子类)。来自JPA 1.0规范:

9.1.18基本注释

基本注释是映射到数据库列的最简单类型。基本注释可以应用于以下任何类型的持久化属性或实例变量:java.util.Calendar,原语类型、原语类型的包装器、java.lang.Stringjava.math.BigIntegerjava.math.BigDecimaljava.util.Date、Java java.sql.Datejava.sql.Timejava.sql.Timestampbyte[]Byte[]、<代码>d14、<代码>d15、枚举以及实现<代码>d16的任何其他类型。如2.1.6节所述,对于这些类型的持久化字段和属性,基本注释的使用是可选的。

票数 5
EN

Stack Overflow用户

发布于 2011-09-05 10:01:36

您必须注意在JPA或JDBC中使用日历或日期,因为它们通常存储时没有时区信息。因此,您的应用程序很容易受到夏令时和时区差异的影响。

我在JPA上做的事情如下:

我使用Date或您喜欢的任何Java时态对象(我更喜欢Date是因为它的不变性)创建了一个getter和setter方法,但实际的列是long或Long (不幸的是,这意味着需要执行null检查)。

代码语言:javascript
复制
private Long timestamp;
public void setTimestamp(final Date timestamp) {
    if (timestamp == null) {
        this.timestamp = null;
    } else {
        this.timestamp = timestamp.getTime();
    }
}
public Date getTimestamp() {
    if (timestamp == null) {
        return null;
    }
    return new Date(timestamp);
}

这为您的实体用户提供了Java日期的灵活性,而不必关心时区和夏令时。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3283871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档