java - 如何与JPA查询这种一对一的关系

标签 java hibernate jpa

我有下一个 ER 结构:

enter image description here

我的实体是这样的:

事件.java

public class Event implements Serializable {

.. many attributes here

@OneToOne(mappedBy = "evento",cascade = CascadeType.ALL,orphanRemoval = true)
     private Quiz quiz;

many getters & setters here ...

}

测验.java

public class Quiz implements Serializable {

    @JoinColumn(name = "evento",referencedColumnName = "id")
    @OneToOne
    private Evento evento;
}

我想获取每个没有测验的事件,所以我的查询是这样的:

Query q = em.createQuery("SELECT e FROM Evento AS e WHERE e.encuesta IS NULL",Evento.class);

但是我得到一个空列表

我使用 hibernate 来实现持久性。

有人可以帮助我吗:)?

最佳答案

尝试 IS EMPTY 子句:

Query q = em.createQuery("SELECT e FROM Evento AS e WHERE e.encuesta IS EMPTY",Evento.class);

看这个:

HQL Query to check if size of collection is 0 or empty

关于java - 如何与JPA查询这种一对一的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24072111/

相关文章:

java - jscrollpane 不适用于 swing 应用程序中的 jtable

java - RequestMappings 根本不起作用

java - @Transactional 内的无状态 session

hibernate - Grails失败时会自动重新打开连接

jpa - 使用搜索字符串排序 - JPA

java - 部署错误 - ServletWrapper 失败 : java. lang.NoSuchMethodError : javax. persistence.OneToMany.orphanRemoval()Z

java - 将 'Minimize' 按钮添加到 JTabbedPane 选项卡栏

java - 当 Activity 被销毁然后重新创建时,未调用观察者并且后值无法从后台线程工作

java - 如何在运行时配置 JPA 表名?

java - JPA(Hibernate)列映射中的原始类和包装类之间有什么区别?