Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
使用“in”运算符的Spring JPA查询问题_Spring_Spring Boot_Spring Data Jpa - Fatal编程技术网

使用“in”运算符的Spring JPA查询问题

使用“in”运算符的Spring JPA查询问题,spring,spring-boot,spring-data-jpa,Spring,Spring Boot,Spring Data Jpa,在Spring Intreface中,我有以下代码: @Query("select gl from GroupEntity gl where ?1 in gl.contacts ") List<GroupEntity> findGroupsByContact(ContactEntity contactEntity); 如果关系建立正确,则可以从联系人存储库查询组 Group.java 如果关系建立正确,则可以从联系人存储库查询组 Group.java 当实体属性

在Spring Intreface中,我有以下代码:

@Query("select gl from GroupEntity gl where ?1 in gl.contacts ")
List<GroupEntity> findGroupsByContact(ContactEntity contactEntity);

如果关系建立正确,则可以从联系人存储库查询组

Group.java


如果关系建立正确,则可以从联系人存储库查询组

Group.java

当实体属性是正确的运算符时,不能使用in JPQL运算符

您应该使用的成员。 为查询提供值以检查其是否属于实体中的某个集合时,应使用的成员。 在向查询提供值列表以检查实体中的属性是否属于此列表时,应使用

示例:

@Entity
public class EntityA {

@Id
private String id;

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<EntityB> entities;

}
当实体属性是正确的运算符时,不能使用in JPQL运算符

您应该使用的成员。 为查询提供值以检查其是否属于实体中的某个集合时,应使用的成员。 在向查询提供值列表以检查实体中的属性是否属于此列表时,应使用

示例:

@Entity
public class EntityA {

@Id
private String id;

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<EntityB> entities;

}

请显示实体和存储库为什么在存储库方法为ez且可用时创建查询?请显示实体和存储库为什么在存储库方法为ez且可用时创建查询?OP希望是单个联系人实体在联系人组的列表中。你的答案与OP想要的不相关。答案不必直截了当。这是关于分享正确的方法,以及在生产中实现JPA的项目中有效的方法。首先,你的解决方案是错误的,你测试过吗?第二个OP不想找到ID列表,OP想要拥有特定contactEntity的组。请再读一遍这篇文章。这是我回答的第二部分。你为什么认为那是错误的?如果定义了多个关系,那么查询组中的混淆是什么?无论如何,为了清楚起见,我正在编辑并删除我的第一部分。OP想要的是一个联系人实体在联系人组的列表中。你的答案与OP想要的不相关。答案不必直截了当。这是关于分享正确的方法,以及在生产中实现JPA的项目中有效的方法。首先,你的解决方案是错误的,你测试过吗?第二个OP不想找到ID列表,OP想要拥有特定contactEntity的组。请再读一遍这篇文章。这是我回答的第二部分。你为什么认为那是错误的?如果定义了多个关系,那么查询组中的混淆是什么?无论如何,为了清晰起见,我正在编辑并删除我的第一部分。
@Entity
@Table(name = "contact")
public class ContactEntity {
...
}
  @OneToMany(fetch=FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "group", orphanRemoval = true)
    List<Contact> contacts = new ArrayList<Contact>();
@ManyToOne
Group group;
@Entity
public class EntityA {

@Id
private String id;

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<EntityB> entities;

}
SELECT a FROM EntityA a WHERE a.id IN :ids

SELECT a FROM EntityA a WHERE :b MEMBER OF a.entities