将此HQL转换为Criteria

时间:2014-07-23 09:43:18

标签: java hql criteria criteria-api

我有以下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?

2 个答案:

答案 0 :(得分:2)

试试这个:

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();

答案 1 :(得分:1)

你可以像下面这样做

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();
    }