Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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_Jpa_Jakarta Ee_Named Query - Fatal编程技术网

Java 在JPA中,如何找到具有属性值的所有类型和具有属性值的许多相关实体?

Java 在JPA中,如何找到具有属性值的所有类型和具有属性值的许多相关实体?,java,jpa,jakarta-ee,named-query,Java,Jpa,Jakarta Ee,Named Query,我想获取所有具有名称为“Create”的操作的侦听器 我有以下实体(简化为本问题): @实体 公共类侦听器 { …省略。。。 @ManyToMany(targetEntity=Action.class,fetch=FetchType.EAGER) @可接合( name=“listenerations”, joinColumns=@JoinColumn(name=“listenerId”,referencedColumnName=“id”), inverseJoinColumns=@JoinCol

我想获取所有具有名称为“Create”的操作的侦听器

我有以下实体(简化为本问题):

@实体
公共类侦听器
{
…省略。。。
@ManyToMany(targetEntity=Action.class,fetch=FetchType.EAGER)
@可接合(
name=“listenerations”,
joinColumns=@JoinColumn(name=“listenerId”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“actionId”,referencedColumnName=“id”)
)
列出行动;
}
@实体
公共集体诉讼
{
…省略。。。
私有字符串名称;
}

如何在操作列表中进行筛选?我只需要侦听器“actions”中的一个动作就可以命名为“Create”。

JPA 2查询中的路径表达式可以导航到集合值字段,包括一对多或多对多关系,但这必须是路径中的最后一步;JPA不允许您编写一个路径表达式,从那里进一步导航。因此,要执行您想要执行的过滤类型,您需要执行联接或创建子查询。JPA 2.0规范提供了前者的示例:

,它具有您想要的形式


让它适应你的模式只是一个练习。

@CássioMazzochiMolin我不需要加入?我看到:
selectlistenerfromslistener-listener-joinlistener.actions-action-WHERE-action.name=:name
@Entity
public class Listener
{
    ...elided...

    @ManyToMany(targetEntity = Action.class, fetch = FetchType.EAGER)
    @JoinTable(
        name = "ListenerActions",
        joinColumns = @JoinColumn( name = "listenerId", referencedColumnName = "id" ),
        inverseJoinColumns = @JoinColumn( name = "actionId", referencedColumnName = "id" )
    )
    List<Action> actions;
}

@Entity
public class Action
{
    ...elided...

    private String name;
}
SELECT DISTINCT o
FROM Order o JOIN o.lineItems l 
WHERE l.product.productType = 'office_supplies'