Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA:检查集合中是否有具有属性的成员_Java_Hibernate_Jpa_Jpql - Fatal编程技术网

Java JPA:检查集合中是否有具有属性的成员

Java JPA:检查集合中是否有具有属性的成员,java,hibernate,jpa,jpql,Java,Hibernate,Jpa,Jpql,在我的软件中,我有一个实体(我们称之为成员)和另一个实体(我们称之为状态)的集合。我需要编写的查询应该返回没有特定属性值e的状态的所有成员。G五, 以下是实体的相关部分: public class Member { @JoinColumn(name = "MEMBER_ID") @OneToMany private List<State> states; @Column private String name; } pu

在我的软件中,我有一个实体(我们称之为成员)和另一个实体(我们称之为状态)的集合。我需要编写的查询应该返回没有特定属性值e的状态的所有成员。G五,

以下是实体的相关部分:

public class Member {
    @JoinColumn(name = "MEMBER_ID")
    @OneToMany
    private List<State> states;

    @Column
    private String name;
}

public class State {
    @Column
    private int property;
}

但是我不知道有什么方法可以在JPQL中实现相同的功能,而不需要在关系的拥有方进行映射。有没有什么方法可以实现这一点而不必费心于双向映射?

试试这样的方法

select m.name from Member m where not exists(
    from Member m1 join m1.states s where s.property = 5
)


您可以这样编写本机查询

select m.name from Member m where not exists(
    from Member m1 join m1.states s where s.property = 5
)
从成员中选择名称,其中成员id不在“从状态中选择id” 其中property=5


JPA允许在子查询from子句中使用集合引用,因此您可以使用:

SELECT m.name 
FROM Member m 
WHERE NOT EXISTS(
    SELECT 1 
    FROM m.states s 
    WHERE s.property = 5
)
这将生成您想要的SQL