【问题标题】:Select One field from hibernate audit history从休眠审计历史中选择一个字段
【发布时间】:2018-06-27 11:59:08
【问题描述】:

我只想从休眠审计中获取一个字段(实体的 PK)。 下面的代码给了我整个实体而不是一个字段

AuditReader reader = AuditReaderFactory.get(entityManager);
List<Contact> contactList = reader.createQuery()
                            .forRevisionsOfEntity(Contact.class, true, true)
                            .add(AuditEntity.revisionProperty("timestamp").between(startDate, endDate))
                            .getResultList();

我也试过了,但它抛出空指针异常

AuditReader reader = AuditReaderFactory.get(entityManager);
List<Contact> contactList = reader.createQuery()
                            .forRevisionsOfEntity(Contact.class,"ID", true, true)
                            .add(AuditEntity.revisionProperty("timestamp").between(startDate, endDate))
                            .getResultList();

例外:

java.lang.NullPointerException
at org.hibernate.envers.query.criteria.CriteriaTools.checkPropertyNotARelation(CriteriaTools.java:41)
at org.hibernate.envers.query.criteria.BetweenAuditExpression.addToQuery(BetweenAuditExpression.java:48)
at org.hibernate.envers.query.impl.RevisionsOfEntityQuery.list(RevisionsOfEntityQuery.java:99)
at org.hibernate.envers.query.impl.AbstractAuditQuery.getSingleResult(AbstractAuditQuery.java:110)
at com.unifyv4.ejb.service.subscription.SubsService.getupdatedAccountDetail(SubsService.java:4249)

【问题讨论】:

  • 想要获取 Contact.class 的字段,即 Contact.ID

标签: java hibernate audit


【解决方案1】:

您可以通过为查询设置投影来查询不同的数据子集:

query.addProjection(AuditEntity.id);

当您这样做并调用 getResultList 时,结果列表将包含 ID 列表而不是实体列表。

【讨论】:

  • 我想获取 Contact.class 的字段,即 Contact.ID
猜你喜欢
  • 2012-08-03
  • 1970-01-01
  • 2019-06-26
  • 2010-10-07
  • 2012-10-16
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多