gpt4 book ai didi

java - 该实体类的标准 API/HQL

转载 作者:行者123 更新时间:2023-12-01 12:41:50 26 4
gpt4 key购买 nike

我有以下实体类:

@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 的唯一约束,一个帐户只能有一个特定仓库的审核记录,因此同一个仓库可以有多个审核记录,每个审核记录都有不同的 accountid。

我想获取每个特定存储库的最新/最近访问时间 AuditRecordEntity 列表,最好使用条件 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);

最佳答案

试试这个。

DetachedCriteria maxDateQuery = DetachedCriteria.forClass(AuditRecordEntity.class);
ProjectionList proj = Projections.projectionList();
proj.add(Projections.max("accessTime"));
proj.add(Projections.groupProperty("repositoryId"));
maxDateQuery.setProjection(proj);

我不确定这是否有效,这应该可以让您了解如何做到这一点。

CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root<AuditRecordEntity> root = criteriaQuery.from(AuditRecordEntity.class);
Expression<Date> accessTime = root.get("accessTime");
criteriaQuery.select(criteriaBuilder.max(accessTime));
criteriaQuery.groupBy(root.get("userId"));
//other code

引用:Answer

关于java - 该实体类的标准 API/HQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com