Java:JPA类,从Date到DateTime重构

bgu*_*uiz 5 java sql orm datetime jpa

使用此SQL创建的表

Create Table X (
    ID varchar(4) Not Null,
    XDATE date
);
Run Code Online (Sandbox Code Playgroud)

和一个如此定义的实体类

@Entity
@Table(name = "X")
public class X implements Serializable {
    @Id
    @Basic(optional = false)
    @Column(name = "ID", nullable = false, length = 4)
    private String id;
    @Column(name = "XDATE")
    @Temporal(TemporalType.DATE)
    private Date xDate; //java.util.Date
    ...
}
Run Code Online (Sandbox Code Playgroud)

有了上面的内容,我可以使用JPA来实现对象关系映射.但是,该xDate属性只能存储日期,例如dd/MM/yyyy.

如何使用一个字段重构以上内容以存储完整日期对象,即dd/MM/yyyy HH24:mm

Pas*_*ent 7

如果您还想在数据库级别存储时间信息,请使用TemporalType.DATETIME:

@Column(name = "XDATE")
@Temporal(TemporalType.DATETIME)
private Date xDate; //java.util.Date
Run Code Online (Sandbox Code Playgroud)

TIMESTAMP在数据库级别使用列类型(xDate并将其存储为'yyyy-MM-dd HH:mm:ss.S').

  • 奇怪 - 我没有看到DATETIME作为选项,我只看到TemporalType.TIME,TemporalType.DATE,TemporalType.TIMESTAMP.我正在使用JPA2 w/Eclipselink 2.3.2.v20111125-r10461 (7认同)
  • 你好.我正在使用带有`EclipseLink`的JPA,而`TemporalType`只有选项`DATE`,`TIME`和`TIMESTAMP`,而不是'DATETIME`.我应该使用`TIMESTAMP`还是`TIME`. (3认同)

sbl*_*ndy 4

您是否尝试过将@Temporal值更改为TemporalType.DATETIME?java.util.Date 和 java.sql.Date 都存储日期和时间组件,TemporalType 控制 JPA 存储/关注哪一部分;日期、时间或两者。