我在 play (1.2.4) 中编写的以下代码有问题:
List<MSprache> sprachen = MSprache.find("active = ?", true).fetch();
List<MFieldDscr> textey = MFieldDscr.find("sprache IN", sprachen).fetch();
如果我执行测试这部分代码的测试,则会显示以下错误:
A java.lang.IllegalArgumentException has been caught, org.hibernate.hql.ast.QuerySyntaxException: unexpected token: null near line 1, column 48 [from models.Sprache.MFieldDscr where sprache IN]
我不明白错误在哪里。
最佳答案
我不太确定你想要实现什么目标,
但我认为这就是你想要的:
String jpql = "FROM MFieldDescr fd WHERE fd.sprache "
+ "IN ( SELECT s FROM MSprache s WHERE s.active = ? ) ";
List<MFieldDscr> textey = MFieldDescr.find( jpql, true ).fetch();
这将找到所有 MFieldDecr
实体,其 MSprache
的 Activity 设置为 true
。
顺便说一句,用于查询实体的语言是 JPQL,如果您想了解更多信息的话。
以下是一些有用的链接:
关于java - playframework 使用 find 和 IN 以及模型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572679/