Java 将此HQL转换为条件

Java 将此HQL转换为条件,java,hql,criteria,criteria-api,Java,Hql,Criteria,Criteria Api,我有以下HQL声明: select auditRecord from AuditRecordEntity auditRecord where auditRecord.auditAccount.accountId = :accountId 我想将其转换为使用javax.persistence.criteria.CriteriaBuilder,但我不确定该怎么做,非常感谢您的帮助 CriteriaBuilder builder = getEntityManager().getCriteriaBui

我有以下HQL声明:

select auditRecord from AuditRecordEntity auditRecord where auditRecord.auditAccount.accountId = :accountId
我想将其转换为使用javax.persistence.criteria.CriteriaBuilder,但我不确定该怎么做,非常感谢您的帮助

CriteriaBuilder builder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Object> query = builder.createQuery();
Root<AuditRecordEntity> root = query.from(AuditRecordEntity.class);
// what next?
CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery=builder.createQuery();
Root=query.from(AuditRecordEntity.class);
//接下来呢?

你可以像下面这样做

public List<UserProfile> getAuditRecords(String acountId) {

        Criteria auditCriteria = session.createCriteria(AuditRecordEntity.class);
        auditCriteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

        auditCriteria.createCriteria("auditAccount").add(Restrictions.eq("accountId ",acountId));

        return auditCriteria .list();
    }
公共列表getAuditRecords(字符串acountId){
Criteria auditCriteria=session.createCriteria(AuditRecordEntity.class);
auditCriteria.setResultTransformer(CriteriaSpecification.DISTINCT\u ROOT\u实体);
auditCriteria.createCriteria(“auditAccount”).add(Restrictions.eq(“accountId”,acountId));
返回auditCriteria.list();
}

你可以像下面这样做

public List<UserProfile> getAuditRecords(String acountId) {

        Criteria auditCriteria = session.createCriteria(AuditRecordEntity.class);
        auditCriteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

        auditCriteria.createCriteria("auditAccount").add(Restrictions.eq("accountId ",acountId));

        return auditCriteria .list();
    }
公共列表getAuditRecords(字符串acountId){
Criteria auditCriteria=session.createCriteria(AuditRecordEntity.class);
auditCriteria.setResultTransformer(CriteriaSpecification.DISTINCT\u ROOT\u实体);
auditCriteria.createCriteria(“auditAccount”).add(Restrictions.eq(“accountId”,acountId));
返回auditCriteria.list();
}

你可以像下面这样做

public List<UserProfile> getAuditRecords(String acountId) {

        Criteria auditCriteria = session.createCriteria(AuditRecordEntity.class);
        auditCriteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

        auditCriteria.createCriteria("auditAccount").add(Restrictions.eq("accountId ",acountId));

        return auditCriteria .list();
    }
公共列表getAuditRecords(字符串acountId){
Criteria auditCriteria=session.createCriteria(AuditRecordEntity.class);
auditCriteria.setResultTransformer(CriteriaSpecification.DISTINCT\u ROOT\u实体);
auditCriteria.createCriteria(“auditAccount”).add(Restrictions.eq(“accountId”,acountId));
返回auditCriteria.list();
}

你可以像下面这样做

public List<UserProfile> getAuditRecords(String acountId) {

        Criteria auditCriteria = session.createCriteria(AuditRecordEntity.class);
        auditCriteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

        auditCriteria.createCriteria("auditAccount").add(Restrictions.eq("accountId ",acountId));

        return auditCriteria .list();
    }
公共列表getAuditRecords(字符串acountId){
Criteria auditCriteria=session.createCriteria(AuditRecordEntity.class);
auditCriteria.setResultTransformer(CriteriaSpecification.DISTINCT\u ROOT\u实体);
auditCriteria.createCriteria(“auditAccount”).add(Restrictions.eq(“accountId”,acountId));
返回auditCriteria.list();
}
试试这个:

CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<AuditRecordEntity> criteriaQuery = criteriaBuilder.createQuery(AuditRecordEntity.class);
Root<AuditRecordEntity> root = criteriaQuery.from(AuditRecordEntity.class);

Predicate predicate = criteriaBuilder.equal(root.get("auditAccount").get("accountId"), accountId);
criteriaQuery.where(predicate);

TypedQuery<AuditRecordEntity> query = em.createQuery(criteriaQuery);

return query.getSingleResult();
CriteriaBuilder-CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery CriteriaQuery=criteriaBuilder.createQuery(AuditRecordEntity.class);
Root=criteriaQuery.from(AuditRecordEntity.class);
谓词谓词=criteriaBuilder.equal(root.get(“auditAccount”).get(“accountId”)、accountId);
criteriaQuery.where(谓词);
TypedQuery=em.createQuery(criteriaQuery);
返回query.getSingleResult();
试试这个:

CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<AuditRecordEntity> criteriaQuery = criteriaBuilder.createQuery(AuditRecordEntity.class);
Root<AuditRecordEntity> root = criteriaQuery.from(AuditRecordEntity.class);

Predicate predicate = criteriaBuilder.equal(root.get("auditAccount").get("accountId"), accountId);
criteriaQuery.where(predicate);

TypedQuery<AuditRecordEntity> query = em.createQuery(criteriaQuery);

return query.getSingleResult();
CriteriaBuilder-CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery CriteriaQuery=criteriaBuilder.createQuery(AuditRecordEntity.class);
Root=criteriaQuery.from(AuditRecordEntity.class);
谓词谓词=criteriaBuilder.equal(root.get(“auditAccount”).get(“accountId”)、accountId);
criteriaQuery.where(谓词);
TypedQuery=em.createQuery(criteriaQuery);
返回query.getSingleResult();
试试这个:

CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<AuditRecordEntity> criteriaQuery = criteriaBuilder.createQuery(AuditRecordEntity.class);
Root<AuditRecordEntity> root = criteriaQuery.from(AuditRecordEntity.class);

Predicate predicate = criteriaBuilder.equal(root.get("auditAccount").get("accountId"), accountId);
criteriaQuery.where(predicate);

TypedQuery<AuditRecordEntity> query = em.createQuery(criteriaQuery);

return query.getSingleResult();
CriteriaBuilder-CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery CriteriaQuery=criteriaBuilder.createQuery(AuditRecordEntity.class);
Root=criteriaQuery.from(AuditRecordEntity.class);
谓词谓词=criteriaBuilder.equal(root.get(“auditAccount”).get(“accountId”)、accountId);
criteriaQuery.where(谓词);
TypedQuery=em.createQuery(criteriaQuery);
返回query.getSingleResult();
试试这个:

CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<AuditRecordEntity> criteriaQuery = criteriaBuilder.createQuery(AuditRecordEntity.class);
Root<AuditRecordEntity> root = criteriaQuery.from(AuditRecordEntity.class);

Predicate predicate = criteriaBuilder.equal(root.get("auditAccount").get("accountId"), accountId);
criteriaQuery.where(predicate);

TypedQuery<AuditRecordEntity> query = em.createQuery(criteriaQuery);

return query.getSingleResult();
CriteriaBuilder-CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery CriteriaQuery=criteriaBuilder.createQuery(AuditRecordEntity.class);
Root=criteriaQuery.from(AuditRecordEntity.class);
谓词谓词=criteriaBuilder.equal(root.get(“auditAccount”).get(“accountId”)、accountId);
criteriaQuery.where(谓词);
TypedQuery=em.createQuery(criteriaQuery);
返回query.getSingleResult();

为什么第二个
.createCriteria(“auditAccount”)
调用?因为他需要检查auditAccount,这是AuditRecordEntity的子对象,正如他在问题auditRecord.auditAccount.AccountId中提到的,为什么第二个
.createCriteria(“auditAccount”)
call?因为他需要检查auditAccount,它是AuditRecordEntity的子对象,正如他在问题auditRecord.auditAccount.AccountId中提到的,为什么第二个
.createCriteria(“auditAccount”)
call?因为他需要检查auditAccount,它是AuditRecordEntity的子对象,正如他在问题auditRecord.auditAccount.AccountId中提到的,为什么第二个
.createCriteria(“auditAccount”)
call?因为他需要检查auditAccount,这是AuditRecordEntity的子对象,正如他在问题auditRecord.auditAccount.AccountIDThank@guardian中提到的,这很好,我还有一个更复杂的问题:-)在这里,我认为Ramzan Zafars的解决方案远远优于这个解决方案,在代码方面。谢谢@guardian,这很有效,我还有一个更复杂的解决方案:-)这里我认为Ramzan Zafars的解决方案远远优于这个方案,代码方面。谢谢@guardian,这很有效,我还有另一个更复杂的解决方案:-)这里我认为Ramzan Zafars的解决方案远远优于这个方案,代码方面。谢谢@guardian,这很有效,我还有另一个更复杂的解决方案:-)在这里,我认为Ramzan Zafars的解决方案在代码方面远远优于此解决方案。