JPQL可以检索没有参考记录的记录吗?

时间:2012-12-18 09:21:08

标签: java jpa

我希望通过Reservation查询检索数据库中没有引用ReservationInstance的{​​{1}}。 JPQL实体拥有ReservationInstance个实体。它是Reservation单向的。

预订表

OneToOne

ReservationInstance表

ID      NAME
0001    AAA
0002    BBB
0003    CCC
0004    DDD

如何检索没有ID SOME_COLUMN RESERVATION_ID 0001 somedata 0004 引用的Reservation列表(对于AAA,BBB和CCC)?

我的实体

ReservationInstance

更新帖子

我使用了以下查询

public class Reservation implements Serializable {
    .....
    private String id;
    .....
    private String name;
    //getter and setter
}

public class ReservationInstance implements Serializable {
    ....
    private String id;
    ....
    private Date fromTime;
    ....
    private Date toTime;

    @OneToOne
    @JoinColumn(name = "RESERVATION_ID", referencedColumnName = "ID")
    private Reservation reservation;
}

我得到了例外

SELECT r FROM Reservation r LEFT JOIN ReservationInstance ri WHERE ri.reservation IS NULL

1 个答案:

答案 0 :(得分:3)

我的第一选择是建立双向关系。

只有在JPA 2.1中才支持LEFT JOIN ON,所以我建议这样:

SELECT r FROM Reservation r WHERE r IS NOT IN (SELECT ri.reservation FROM ReservationInstance ri)

不是100%确定这是有效的,如果没有尝试使用r.id IS NOT IN某些查询返回ids。