如何解决Hibernate envers 5.4.x 无法解析属性
我使用 hibernate envers 进行审计。 我有简单的用户实体:
@Entity
@Table(name = "user")
@Audited
@AuditTable(value = "userHistory")
public class User implements Serializable {
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
private String username;
private String password;
@OneToMany(mappedBy="user")
private Collection<Test> tests;
//getter and setter
}
实体测试:
@Entity
@Table(name = "test")
@Audited
@AuditTable(value = "testHistory")
public class Test {
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
private String description;
@ManyToOne(fetch = FetchType.LAZY,optional = false)
@JoinColumn(name = "useriduser")
private User user;
public Test() {
super();
}
//getter and setter
}
日志:org.hibernate.QueryException:无法解析属性:用户
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: user of: name.luoyong.hibernate.basic.entity.Test_AUD [select e__ from name.luoyong.hibernate.basic.entity.Test_AUD e__ where e__.user.id = :_p0 order by e__.originalId.REV.id asc]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:113)
at org.hibernate.envers.internal.tools.query.QueryBuilder.toQuery(QueryBuilder.java:323)
at org.hibernate.envers.query.internal.impl.AbstractAuditQuery.buildQuery(AbstractAuditQuery.java:98)
at org.hibernate.envers.query.internal.impl.AbstractAuditQuery.buildAndExecuteQuery(AbstractAuditQuery.java:104)
at org.hibernate.envers.query.internal.impl.RevisionsOfEntityQuery.getQueryResults(RevisionsOfEntityQuery.java:173)
at org.hibernate.envers.query.internal.impl.RevisionsOfEntityQuery.list(RevisionsOfEntityQuery.java:136)
at org.hibernate.envers.query.internal.impl.AbstractAuditQuery.getResultList(AbstractAuditQuery.java:112)
at name.luoyong.hibernate.envers.App.reader(App.java:65)
at name.luoyong.hibernate.envers.App.main(App.java:24)
Caused by: org.hibernate.QueryException: could not resolve property: user of: name.luoyong.hibernate.basic.entity.Test_AUD [select e__ from name.luoyong.hibernate.basic.entity.Test_AUD e__ where e__.user.id = :_p0 order by e__.originalId.REV.id asc]
我正在尝试使用以下方法查找所有修订。 我使用 AuditorReader 查询修订版
AuditReader reader = AuditReaderFactory.get(entityManager);
AuditQuery auditQuery=reader.createQuery().forRevisionsOfEntity(Test.class,true,true);
auditQuery.add(AuditEntity.property("user.id").eq(1L)).getResultList().forEach(e->System.out.println(e.toString()));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。