user2586917
user2586917

Reputation: 774

Convert this HQL to Criteria

I have the following HQL statement:

select auditRecord from AuditRecordEntity auditRecord where auditRecord.auditAccount.accountId = :accountId

I'd like to convert it to use the javax.persistence.criteria.CriteriaBuilder, but am unsure what do do, any help is much appreciated!

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

Upvotes: 0

Views: 1444

Answers (2)

guardian
guardian

Reputation: 439

Try this:

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

Upvotes: 2

Ramzan Zafar
Ramzan Zafar

Reputation: 1600

you can do it like following

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

Upvotes: 1

Related Questions