我正在开发应用程序,它有一个名为 My.java 的实体,它是从另一个具有名为edited 的字段的实体扩展的。 对于每次更新,该字段都将使用当前时间戳进行更新
我正在使用单表继承策略。
我使用 jpa/eclipse 链接作为持久性提供程序。
编辑字段正在使用当前时间戳进行更新,即使没有调用 setter 方法,我的 java 代码中也没有其他引用更改此编辑字段的值。
在调试时,我可以看到 UPDATE QL 语句,用于编辑字段更新。
我真的很想知道为什么/如何更新它的值,是否可以在没有 setter 调用的情况下进行?
这是映射的父类(super class):
@MappedSuperclass
public abstract class SuperEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1125783654888232605L;
/**
* The time the entry was created
*/
@Column(name = "CREATED")
private Timestamp created;
/**
* The date the entry was edited
*/
@Column(name = "EDITED")
@Version
private Timestamp edited;
最佳答案
检查这些事情。
- 您的实体可能正在实现某种可审核的接口(interface)
- 您的字段可能具有 @Version 注释
第一种情况你已经弄清楚了接口(interface)的用法并且你可以理解它 在第二种情况下,这是 EJB 和 Hibernate 中的默认行为和预期行为。
我在谷歌搜索后得到了这个链接,它可能对你有用
这不是什么大问题,你可以轻松克服
关于java - 是否可以在 jpa 中调用不调用 setter 的情况下更新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257525/