[英]Java EE NamedQuery and JOIN statement - results in EJB Exception
我有一個名為Lots的實體,如下所示:
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;
....
我還有一個名為Boats的實體:
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?
謝謝。
首先,當您問為什么會出現異常時,請發布stacktrace。 但是,我認為問題在於,當您應該考慮使用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 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.