현재 JPA Criteria API를 사용하여 쿼리를 작성하는 데 어려움을 겪고 있습니다. 동적으로 쿼리를 작성하고 싶습니다. 메타 모델 및 입력 된 쿼리를 사용하는 것은 나를위한 옵션이 아닙니다. 바로 다음 쿼리에도 불구하고,기준 API 조인 untyped : 관련 엔터티 (일대일)의 값 쿼리
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Object[]> query = builder.createQuery(Object[].class);
Root<MyEntity> root = query.from(MyEntity.class);
root.join("myRelatedEntities");
query.select(builder.array(root.get("myRelatedEntities").get("name")));
Query queryCriteria = em.createQuery(query);
List<Object[]> resultRows = queryCriteria.getResultList();
resultRows 빈 목록입니다 : 나는 "MyEntity"에 가입하여 "MyRelatedEntity"의 필드를 조회하려고
@Entity
@Table(name = "MYENTITY")
public class MyEntity {
...
@OneToMany(mappedBy = "myEntity", fetch = FetchType.LAZY)
private Set<MyRelatedEntity> myRelatedEntities;
...
}
@Entity
@Table(name = "MYRELATEDENTITY")
public class MyRelatedEntity {
...
@ManyToOne
@JoinColumn(name = "MYENTITY", nullable = false)
private MyEntity myEntity;
...
}
: 나는 다음과 같은 요소를 가지고 가정 데이터베이스에 나와 내 결과를 제공합니다 :
Select myrelent.name from MYENTITY myent, MYRELATEDENTITY myrelent where myent.id = myrelent.myentity;
기준 API로 작성된 쿼리에 어떤 문제가 있습니까? 어떤 도움을 주셔서 감사합니다!
그리고 질문은 ...? – Taylor
형식이 지정되지 않으면 JPQL을 사용하지 말고 피타를 구해보십시오. – kostja
@kostja : "name"문자열이 동적으로 생성되면 완벽하게 이해됩니다. – perissf