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_Orm_Entity - Fatal编程技术网

Java JPA-按字符串列表搜索对象

Java JPA-按字符串列表搜索对象,java,jpa,orm,entity,Java,Jpa,Orm,Entity,我有这样的实体bean: @ElementCollection @CollectionTable( name = "example", joinColumns = @JoinColumn(name = "test_id") ) private List<String> tests = new ArrayList<>(); @ElementCollection @收集表( name=“示例”, joi

我有这样的实体bean:

@ElementCollection
    @CollectionTable(
            name = "example",
            joinColumns = @JoinColumn(name = "test_id")
    )
    private List<String> tests = new ArrayList<>();
@ElementCollection
@收集表(
name=“示例”,
joinColumns=@JoinColumn(name=“test\u id”)
)
私有列表测试=新建ArrayList();
我需要找到列表中至少有一个字符串的对象,就像另一个字符串列表中的字符串一样。 例如: 对象在列表“一、二、三”中有元素 另一个列表包含元素“一、四、五” 查询应该找到这个对象,因为两个列表中都有字符串“One”

查询的外观如何?

可能正是您所需要的。它通过删除B中A中不包含的所有元素来改变原始集合,例如:

List<Integer> a = ...; // a = 1,2,3,4,5
List<Integer> b = ...; // b = 1,2,3,4,5,6,7
b.retainAll(a); // returns true, b becomes 1,2,3,4,5
列表a=…;//a=1,2,3,4,5
列表b=…;//b=1,2,3,4,5,6,7
b、 保留(a);//返回true,b变为1,2,3,4,5
@实体
班级报名{
@元素集合
@CollectionTable(name=“example”,joinColumns=@JoinColumn(name=“test\u id”))
私有列表测试=新建ArrayList();
//吸气剂设定器。。。。。
}       
公共列表getByTests(列表测试){
String sql=“从条目左连接获取中选择条目
entry.tests左连接fetch,其中test位于(:tests)”;
Query Query=entityManager.createQuery(sql);
query.setParameter(“测试”,tests);
返回query.getResultList();
}

我正在寻找JPA查询。如果是,请接受/投票
@Entity    
class Entry {

  @ElementCollection
  @CollectionTable(name = "example",joinColumns = @JoinColumn(name = "test_id"))
  private List<String> tests = new ArrayList<>();

   //getter setter.....

}       
  public List<Entry> getByTests(List<String> tests){
    String sql = " SELECT entry  FROM Entry entry left join fetch 
    entry.tests test left join fetch WHERE  test in(:tests) ";

    Query query = entityManager.createQuery(sql);
    query.setParameter("tests",tests);
    return query.getResultList();
 }