我想知道 JPA 是否提供任何机制来持久保存具有日期字段的实体?
例如
@Entity
public class Trade {
@Id
@GeneratedValue
private long id;
// some jpa magic here maybe?
private Date date;
...
}
当持久化此实体数据库时,仅将长整型保留为字段...但是当实例化此实体时,它将长整型转换为日期。
当所有数据库内容都是手工编码时,如果您愿意,您可以轻松地做到这一点。我试图达到直接访问数据库时的灵 active ,但我想使用 JPA 来做到这一点。到目前为止,这是我唯一不知道如何正确做的事情。
<小时/>更新
日期类型只是一个例子,我的意思是一些自定义类型,我知道从原始类型转换为自定义实例的逻辑...
最佳答案
如果要将 java.util.Date
存储为 long
,则需要使用转换器(自 JPA 2.1 起)。例如:
import javax.persistence.AttributeConverter;
public class MyConverter implements AttributeConverter<Date, Long> {
public Long convertToDatabaseColumn(Date attribute) {
return attribute.getTime();
}
public Date convertToEntityAttribute(Long dbData) {
return new Date(dbData);
}
}
以及该字段的注释:
@Convert(converter = MyConverter.class)
private Date date;
<小时/>
查看更多Example Converter - Java Persistence/Basic Attributes - Wikibooks (摘自强烈推荐书籍Java Persistence - Wikibooks)
关于java - 使用 JPA 持久化或实例化时如何转换属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25486649/