2013-03-15 5 views
1

:자바 EE NamedQuery과 문을 가입 - 결과를 EJB 예외에 다음과 같이 내가 기업이 많은라고 한

public class Lots implements Serializable { 

private static final long serialVersionUID = 1L; 
@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private int lotId; 

@ManyToOne 
private Boats boats; 

private int numCrates; 

.... 

을 그리고 나는 또한 엔티티라는 보트가 :

public class Boats implements Serializable { 

private static final long serialVersionUID = 1L; 
@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private int boatId; 

@ManyToOne 
private Users user; 

private String name; 

내가하려고를 Lots에 대해 다음과 같이 명명 된 쿼리를 만듭니다.

@NamedQueries({ 
@NamedQuery(name = "FindUsersByLot", query = "SELECT b FROM Lots b JOIN Boats a ON  (b.boats.boatId = a.boatId) WHERE a.user = :user")  
}) 

하지만 EJB 예외가 발생합니다.

누구든지 명명 된 쿼리에서 JOIN을 수행 할 수있는 방법을 알고 있습니까?

감사합니다.

답변

3

우선 예외를 묻는 메시지가 표시되면 스택 추적을 게시하십시오. 그러나 문제는 JPQL을 생각할 때 여전히 생각하고 있다고 생각합니다. SQL. 대신이 시도 :

@NamedQuery(name = "FindUsersByLot", query = "SELECT b FROM Lots b JOIN b.boats a WHERE a.user = :user") 

설명 - 각 Lots 기록 또는 경우하지 않을 수 있습니다 수있는 boatId 열을 포함 할 것을 가정하고 있습니다. @ManyToOne에서 JPA 공급자는 Boats쪽에 관계를 저장하는 것을 선호합니다. 내가 한 것처럼 쿼리를 작성한 이유는 this입니다.

+0

감사합니다. –

+0

도움이 되니 기쁩니다! 나중에 스택 추적을 게시 하시겠습니까? – rdcrng