有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java@version注释在jpa/eclipselink中工作不正常

我有一个基本的实体类

其中一个字段(时间戳)具有@version属性,因此Jpa将自动增加该值

但是,有时时间戳值没有得到更新,编辑的日期小于创建的日期,但从理论上讲,这种情况永远不会发生

我没有以编程方式设置已编辑的

这是我的实体类:

public class BaseEntity implements  Serializable {  

@Column(name = "CREATED")
private Timestamp created;

@Column(name = "EDITED")
@Version
private Timestamp edited;

// other fields, getters and setters

}

我已经阅读了很多关于@version注释的文章,但是我不明白为什么这个值不会更新,这背后的原因是什么

如果有人帮我,那就太好了

谢谢


共 (1) 个答案

  1. # 1 楼答案

    以下是一些基本准则:

    • 检查您是否导入了正确的包javax.persistence.Version
    • 保存对已持久化实体的更改时,请使用obj = entityManager.merge(obj);
    • 切勿手动更改版本字段的值。实体经理将负责此事

    要进一步调试,请编辑persitence.xml,并在属性中添加以下行:

    <property name="eclipselink.logging.level" value="FINE"/>
    <property name="eclipselink.logging.parameters" value="true"/>
    <property name="eclipselink.logging.sql.level" value="FINE"/>
    

    这将启用精细日志记录并生成大量输出。您将能够看到更新查询以及具体发生的情况