我有一个实体如下:
public class Foo {
private List<String> bars;
@ElementCollection(fetch=FetchType.LAZY)
@CollectionTable(name="T_BARS", joinColumns=@JoinColumn(name = "ID"))
@Column(name="BAR")
public List<String> getBars() {
return bars;
}
}
现在我正在尝试查询包含id为'a','b'或'c'的条形元素的所有元素foo,但我无法使其工作。
我尝试了以下两种方法:
select from FOO as f where f.bars in elements
(select b.id from T_BARS as b where b.bar in elements('a','b','c'))
这会产生QuerySyntaxException:未映射的T_BARS
我的第二种方法如下:
select from FOO as f where elements('a','b','c') in elements(f.bars)
这会产生QuerySyntaxException意外令牌
编辑:我正在使用envers,所以加入似乎不可能!?
答案 0 :(得分:0)
似乎在jobss forum的envers中无法进行连接,所以我最终分割了查询。它并不优雅,但是它完成了工作,提供的列表永远不会很大:
select from FOO as f where
('a' in elements(f.bars)
or 'b' in elements(f.bars)
or 'c' in elements(f.bars)
or ...)
...