我无法找到基于字符串作为主键查找审核记录的正确查询。但是,通过对给定表进行适当的审计,所有其他功能都可以正常运行。
以下是我的域对象的代码:
private String userName;
private Date createDate;
private Date modifyDate;
@Id
@Column(name = "user_name", nullable = false, length = 10)
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
以下是我正在搜索的查询代码,这里propertyValue是我想要搜索的用户名:
AuditQuery query = reader.createQuery()
.forRevisionsOfEntity(targetClass, false, true)
.add(AuditEntity.revisionType().ge(RevisionType.ADD))
.add(AuditEntity.property("userName").eq(propertyValue))
.addOrder(AuditEntity.revisionNumber().desc());
return query.getResultList();
我通过运行此查询获得org.hibernate.QueryException: could not resolve property userName
异常。
是否有不同的处理字符串主键的方法?
答案 0 :(得分:1)
没有名为username
的属性,该类具有id。将代码更改为使用AuditEntity.id()
而不是AuditEntity.property(..)
。
AuditQuery query = reader.createQuery()
.forRevisionsOfEntity(targetClass, false, true)
.add(AuditEntity.revisionType().ge(RevisionType.ADD))
.add(AuditEntity.property("userName").eq(propertyValue))
.addOrder(AuditEntity.revisionNumber().desc());
改为使用
AuditQuery query = reader.createQuery()
.forRevisionsOfEntity(targetClass, false, true)
.add(AuditEntity.revisionType().ge(RevisionType.ADD))
.add(AuditEntity.id().eq(propertyValue))
.addOrder(AuditEntity.revisionNumber().desc());