Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 此实体类的标准API/HQL_Java_Hibernate_Hql_Criteria_Criteria Api - Fatal编程技术网

Java 此实体类的标准API/HQL

Java 此实体类的标准API/HQL,java,hibernate,hql,criteria,criteria-api,Java,Hibernate,Hql,Criteria,Criteria Api,我有以下实体类: @Entity @Table(name = "auditrecord", uniqueConstraints = { @UniqueConstraint(columnNames = { "accountid", "repositoryid" }) }) public class AuditRecordEntity { private UUID accountId; private UUID repositoryId; private Date accessT

我有以下实体类:

@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列表,最好使用criteria 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);
CriteriaBuilder-CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery CriteriaQuery=criteriaBuilder.createQuery();
Root=criteriaQuery.from(AuditRecordEntity.class);
criteriaQuery.select(root);
//这里
列表谓词=新的ArrayList();
//在这里添加谓词。
entitySearchCriteria.addPredicates(谓词);
addEntityCriteria(criteriaBuilder、criteriaQuery、root、entitySearchCriteria、null、null);
返回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
CriteriaBuilder-CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery CriteriaQuery=criteriaBuilder.createQuery();

Root

谢谢@AmitChotaliya,你知道如何将其应用到我上面的方法中吗(我已经更新了我的帖子)?感谢Hanks@HiberKnight,很抱歉再次询问:-(但现在在调用criteriaQuery.max(…)时出现此编译错误-绑定不匹配:CriteriaBuilder类型的通用方法max(表达式)不适用于参数(路径)。推断类型对象不是有界参数的有效替代品。有什么想法吗?请尝试更新的答案,同时检查提供的参考答案。