Java 将此HQL转换为条件
我有以下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
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的解决方案在代码方面远远优于此解决方案。