Pau*_*ell 1 ejb exception named-query java-ee
我有一个名为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;
....
Run Code Online (Sandbox Code Playgroud)
我还有一个名为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;
Run Code Online (Sandbox Code Playgroud)
我试图在Lots上创建一个命名查询,如下所示:
@NamedQueries({
@NamedQuery(name = "FindUsersByLot", query = "SELECT b FROM Lots b JOIN Boats a ON (b.boats.boatId = a.boatId) WHERE a.user = :user")
})
Run Code Online (Sandbox Code Playgroud)
但这会导致EJB异常.
有谁知道我如何在命名查询中进行JOIN?
谢谢.
首先,当你问为什么会遇到异常时,请发布堆栈跟踪.但是,我认为问题是你还在考虑SQL什么时候应该思考JPQL.试试这个:
@NamedQuery(name = "FindUsersByLot", query = "SELECT b FROM Lots b JOIN b.boats a WHERE a.user = :user")
Run Code Online (Sandbox Code Playgroud)
解释 - 您假设每条Lots记录都包含一boatId列,可能是也可能不是.在@ManyToOneJPA提供商可能会选择存储关系Boats.至于为什么我按照我的方式编写查询,请查看此内容.