gpt4 book ai didi

java - @version 注释在 jpa/eclipselink 中无法正常工作

转载 作者:行者123 更新时间:2023-12-01 20:23:17 26 4
gpt4 key购买 nike

我有一个基本实体类

其中一个字段(时间戳)具有@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注解的文章,但我不明白为什么这个值不会更新,这背后的原因是什么。

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

谢谢

最佳答案

以下是一些基本准则:

  • 检查您是否导入了正确的包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"/>

这将启用精细日志记录并生成大量输出。您将能够看到更新查询以及到底发生了什么。

关于java - @version 注释在 jpa/eclipselink 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44262415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com