2016-10-04 4 views
0

나는 EJB에 대한 튜토리얼을보고 내 프로젝트에서 사용하려고했다. find() 함수를 호출하고 행 ID로 검색하려고하면 결과가 나타납니다. 하지만 이제는 외래 키 검색 만하는 문제가 있습니다. find()을 사용하고 외부 키를 매개 변수로 전달하면 예외가 발생합니다. java.lang.IllegalArgumentException 이제 find() 함수를 기본 키없이 사용할 수 없거나 내 SQL-Query으로 DAO를 만들어야하는지 알고 싶습니다.외래 키로 Java EJB 찾기

답변

2

DAO를 작성하는 대신 프로젝트는 이미 자체 DAO 인 Entity Manager를 사용하여 JPA를 활용하고 있습니다. 이 경우

, 내가, 또는 편리한 유틸리티 클래스에 엔티티의 위에 명명 된 쿼리를 넣어, 특정 이름 쿼리를 작성합니다 :

@Entity 
@NamedQuery(
    name="findMyEntityWithFK", 
    queryString="SELECT e FROM EntityTable e WHERE e.myForeignKey = :myForeignKey") 

을 그리고 당신은 간단하게 할 수 있습니다

Query queryByFK = em.createNamedQuery("findMyEntityWithFK"); 
queryByFK.setParameter("myForeignKey", "xyz"); 
Collection entities = queryByFK.getResultList();