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」のバー要素を含むすべての要素fooにクエリを実行しようとしていますが、それを機能させることができません。

次の2つのアプローチを試しました。

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がマップされていません

私の2番目のアプローチは次のとおりです。

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

これにより、QuerySyntaxExceptionの予期しないトークンが生成されます

編集:私はenversを使用しているので、結合は不可能のようです!?

4

1 に答える 1

0

ジョブフォーラムのエンバーでは結合ができないようですので、クエリを分割することになりました。それはエレガントではありませんが、それは仕事をし、提供されたリストは決して大きくなりません:

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 に答える