我正在使用Hibernate 4.1.4.Final,我在一个单独的表中有一个版本和子列表的父级。
我遇到的问题是当我添加到子列表时,父级的版本没有增加。我可以手动完成,但这部分地违背了使用@version注释的目的。
如何在更新子项或添加到子项列表时让父项的版本增加?
父:
@Entity
@Table(name = "Parent")
public class Parent implements java.io.Serializable {
@Version
@Column(name = "version")
private int _version;
@OneToMany(mappedBy = "_parent", cascade = javax.persistence.CascadeType.ALL)
@OrderBy(clause = "id")
@Cascade({CascadeType.ALL})
private List<Child> _children= new ArrayList<Children>();
}
孩子:
@Entity
@Table(name = "Child")
public class Child {
@Id
@Column(name = "id")
@GeneratedValue(generator = "native")
@GenericGenerator(name = "native", strategy = "native")
private Integer _id;
@ManyToOne
@JoinColumn(name = "parentId")
private Parent _parent;
}
谢谢
答案 0 :(得分:2)
虽然没有记录,但您可以在一对多方面添加@OptimisticLock(excluded = false)。我使用hibernate-core 4.3.5.Final进行了测试。
要符合JPA标准,您需要将Parent - 而不是Child - 作为集合的拥有方。 AFAIK,有三种方法可以做到: