【发布时间】:2014-07-30 09:05:24
【问题描述】:
我有以下实体类:
@Entity
@Table(name = "auditrecord", uniqueConstraints = { @UniqueConstraint(columnNames = {
"accountid", "repositoryid" }) })
public class AuditRecordEntity {
private UUID accountId;
private UUID repositoryId;
private Date accessTime;
@Column(name = "accountid", nullable = false, updatable = false)
public UUID getAccountId() {
return accountId;
}
@Column(name = "repositoryid", nullable = false, updatable = false)
public UUID getRepositoryId() {
return repositoryId;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "accesstime", nullable = false, updatable = true)
public Date getAccessTime() {
return accessTime;
}
// setters for above fields
}
注意 accountId+repositoryId 的唯一性约束,一个账户只能有一个特定 repo 的审计记录,所以同一个仓库可以有多个审计记录,每个审计记录都有不同的 accountid。
我想获取每个特定 repo 的 最新/最近访问时间 AuditRecordEntitys 的列表,最好使用条件 API。
它需要插入下面的空间:
CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root<AuditRecordEntity> root = criteriaQuery.from(AuditRecordEntity.class);
criteriaQuery.select(root);
// here
List<Predicate> predicates = new ArrayList<Predicate>();
// add predicates here.
entitySearchCriteria.addPredicates(predicates);
addEntityCriteria(criteriaBuilder, criteriaQuery, root, entitySearchCriteria, null, null);
return getPagedByQuery(criteriaQuery, pageSize, pageNumber);
【问题讨论】:
标签: java hibernate hql criteria criteria-api