java - 创建自定义 JPA 时间注释

标签 java hibernate jpa orm

我希望 JPA 实体中的一些 mycoulmns 在插入/更新期间从数据库中获取值,即从 Oracle sys_context,我相信 JPA 时间注释包括数据库在插入/更新期间生成的时间戳,有什么方法可以创建自定义注释与此有些相似或在插入/更新期间提供一些默认值,如果您遇到这种情况,有人可以提供一些指示。

最佳答案

I want some of mycoulmns in the JPA entity to take values from database during inserts/updates

@Column 配置为不可插入和不可更新,并用@Generated 注释该字段(Hibernate 特定注释)。通过这样做,Hibernate 将在插入、更新后从数据库中获取值。来自引用文档:

2.4.3.5. Generated properties

Some properties are generated at insert or update time by your database. Hibernate can deal with such properties and triggers a subsequent select to read these 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;
}

Annotate your property as @Generated You have to make sure your insertability or updatability does not conflict with the generation strategy you have chosen. When GenerationTime.INSERT is chosen, the property must not contains insertable columns, when GenerationTime.ALWAYS is chosen, the property must not contains insertable nor updatable columns.

@Version properties cannot be @Generated(INSERT) by design, it has to be either NEVER or ALWAYS.

关于java - 创建自定义 JPA 时间注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3276599/

相关文章:

java - 使用线程池同步银行java

java - @ManyToOne 在启用 Hibernate 二级缓存时延迟加载失败

java - 为什么我在尝试开始事务时得到 NullPointerException?

java - 如何在 JeroMQ 中实现主备队列作业处理系统?

java - 对象中的无限递归/静态创建/为什么此代码会抛出 NullPointerException?

java - Hibernate 并发在 saveOrUpdate 上创建重复记录

java - 按日期字段的标准限制

jakarta-ee - JPA 数据库分隔符

java - H2 序列在列中生成负数 [JPA Spring]

java - 使用随机库 Java 进行播种产生相同的结果