簡體   English   中英

Java EE NamedQuery和JOIN語句-導致EJB異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM