0

我有一个实体如下:

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”的 bar 元素的所有元素 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 not mapped

我的第二种方法如下:

select from FOO as f where elements('a','b','c') in elements(f.bars)

这会产生一个 QuerySyntaxException 意外标记

编辑:我正在使用 envers,所以连接似乎不可能!?

4

1 回答 1

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 ...)
...
于 2012-12-24T10:57:19.717 回答