0
나는 엔티티라는 회사에 다음과 같은 관계가 사용자라는 엔티티 있습니다 JPA 기준 - 표현 DB 필드 이름을 기반으로
@Entity
public class User {
...
@ManyToOne
@JoinColumn(name="COMPANY_ID",referencedColumnName="ID")
private Company company = null;
...
}
그리고 내 데이터베이스에
, 나는이있는 사용자 테이블이를 " COMPANY_ID "열에 있습니다. 이 필드를 사용하여 JPA 기준 쿼리를 만들려면 어떻게해야합니까? 기준 빌더를 사용 는, 내가 성공하지 않고 다음과 같은 표현을 시도했다 :
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(User.class);
Root mockEntityRoot = cq.from(User.class);
//cq.where(cb.equal(mockEntityRoot.get("company"), 2));
//cq.where(cb.equal(mockEntityRoot.get("COMPANY_ID"), 12));
cq.where(cb.equal(mockEntityRoot.get("company.id"), 8));
entityManager.createQuery(cq).getResultList();
그러나 나는 다음과 같은 오류가 발생했습니다 : "속성은 [company.id] 관리 형 사용자에서 존재하지 않습니다. "
미리 감사드립니다.
안녕 레오, 감사 프롬프트 답변을 많이 가질 수 있습니다. 귀하의 접근 방식을 다음과 같은 술어를 사용하여 테스트했습니다 : 'Join userCompanyJoin = mockEntityRoot.join ("company"); cq.where (cb.equal (userCompanyJoin.get ("id"), exampleObject.getCompany(). getId())); 나는 또한 cq.where (cb.equal (mockEntityRoot.get ("company"). get ("id"), exampleObject.getCompany(). getId()));와 같은 성공적인 동작을 보였다 . 다시 귀하의 도움에 감사드립니다. –
rbezerra