JPQL:如何使用where子句实现与集合成员声明相同的功能?

时间:2015-11-28 04:53:13

标签: java database hibernate jpa jpql

我的实体类是这样的:

[s, fs] = wavread(file);

现在我想通过输入作者姓名来查询书籍,例如: Tom ,但忽略名称的情况,所以 tom / tOm /...也应该匹配。我知道我可以使用集合成员声明:

@Entity
public class Book {
    ...
    @ElementCollection
    private List<String> authors;
    ...
}

但是,在我们的应用程序框架中,所有JPQL语句都是从固定模板生成的:

select b from Book b, in(b.authors) a where lower(a) = 'tom'

我只允许提供where子句。有人知道如何使用此模板获得与上述相同的结果吗?

1 个答案:

答案 0 :(得分:0)

最后我发现了一种欺骗方式:

select b from Book b where (b.id in (select bb from Book bb, in(bb.authors) a where lower(a) = 'tom'))