如何使用java.sql.Timestamp作为真正的java.util.Date与JPA
我有一个关于毫秒日期管理的问题。我理解需要使用TIMESTAMP来存储毫秒:
@Temporal(TIMESTAMP)
@Column(name="DATE_COLUMN", nullable = false)
@Override public java.util.Date getDate() { return this.date; }
但是,如果我无法将此日期与java.util.Date的另一个实例进行比较,除非我注意equals()调用的顺序,因为实例是java.sql.Timestamp。如何从JPA获取java.util.Date?因为来自 JPA 的日期,所以即使方法签名是 java.util.Date,实际上 java.sql.Timestamp 的实例。this.date
java.util.Date newDate = new Date(this.date.getTime());
this.date.equals(newDate) == false
newDate.equals(this.date) == true
我尝试在持久性类中修改我的方法:
@Override
public Date getDate() {
return this.date == null ? null : new Date(this.date.getTime());
}
它正在工作,但对于大量数据来说效率不高。
还有其他选择:
我可以修改我的持久性类的设计,以便在我检索它之后从感知日期创建一个java.util.Date。
@PostLoad
我想知道我是否无法使用?
ClassTransformer
你有没有遇到过这个问题?我做错了什么?处理此问题的最佳方法是什么?