我有以下实体:组合键找不到属性
@Entity @Table @Audited
public class MyParent {
@Id
@Column
Integer id;
@OneToMany(mappedBy = "id.myParent", orphanRemoval = true)
@Cascade({ CascadeType.ALL })
List<Child> children;
}
@Entity @Table @Audited
public class Child {
@EmbeddedId
ChildId id = new ChildId();
}
@Embeddable
public class ChildId implements Serializable {
@MapsId("my_parent")
@JoinColumn(name = "my_parent_id")
@ManyToOne
MyParent myParent;
@Column
String name;
}
我加入之前注释@Audited
,一切运行良好。之后一切都失败了,因为Hibernate 5.1不喜欢组合键(见HHH-7625)。
它花了很长时间,但我刚刚设法更新到5.2,现在一切正常......除了审计。我得到以下异常:
org.hibernate.QueryException:无法解析属性:的myParent_id:org.acme.project.Child_AUD [从org.acme.project.Child_AUD选择e__ e__其中e __ myParent_id = :myParent_id和e__.originalId.REV.id =(<去除内部查询>)
我用这个代码:
AuditReader auditReader = AuditReaderFactory.get(this.em);
MyParent parent = auditReader .find(MyParent.class, id, revision);
parent.getChildren(); // exception is here
那么,这是否Envers从获得myParent_id
?我不确定。我试图将列my_parent_id
重命名为该ID,但它什么都没做。
我试图用ID替换ChildId.myParent
,但这也没有帮助。
This paragraph在文档中看起来异常相似,但我不知道我应该怎么做根据它说什么。
我错过了什么吗?或者这又是一个错误?我如何让代码工作?
您是否在'MyParent'的'@ OneToMany'映射上尝试了@AuditMappedBy(mappedBy =“id.myParent”)'来查看这是否有助于影响Envers? – Naros
@Naros是的,那么例外是:“@AuditMappedBy指向一个不存在的属性:org.acme.project.Child.id.myParent” –