我希望JPA实体中的某些mycoulmns在插入/更新期间从数据库中获取值,即从Oracle sys_context中获取值,我相信JPA时态注释包括在插入/更新期间数据库生成的时间戳,有什么办法可以创建自定义注释?为此或在插入/更新过程中提供一些默认值,如果您遇到这种情况,有人可以给出一些指示吗?
最佳答案
我希望JPA实体中的某些mycoulmns在插入/更新期间从数据库获取值
将@Column
配置为不可插入和不可更新,并使用 @Generated
(Hibernate特定注释)对字段进行注释。这样,Hibernate将在插入,更新后从数据库中获取值。从参考文档中:
2.4.3.5. Generated properties
一些属性在生成
由您插入或更新时间
数据库。休眠可以处理这样的
属性并触发后续
选择以读取这些属性。
@Entity
public class Antenna {
@Id public Integer id;
@Generated(GenerationTime.ALWAYS)
@Column(insertable = false, updatable = false)
public String longitude;
@Generated(GenerationTime.INSERT) @Column(insertable = false)
public String latitude;
}
用
@Generated
注释您的媒体资源你必须确保你的
可插入性或可更新性不
与生成策略冲突
你已经选择。什么时候
选择了
GenerationTime.INSERT
后,属性不得包含可插入
列,当
GenerationTime.ALWAYS
时选择该属性时,不得
包含可插入或不可更新
列。
@Version
属性不能是通过设计
@Generated(INSERT)
,它具有可以是
NEVER
或ALWAYS
。关于java - 创建一个自定义的JPA时间注释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3276599/