'hql中元素(foo.elements)'中的元素(a,b,c)?

时间:2012-12-18 09:01:26

标签: java hibernate hql hibernate-envers

我有一个实体如下:

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,所以加入似乎不可能!?

1 个答案:

答案 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 ...)
...