Java JPA-按字符串列表搜索对象
我有这样的实体bean: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
@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();
}