0

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]

どこが間違っているのか分かりません。

4

1 に答える 1

1

あなたが達成しようとしていることについてはよくわかりませんが、
これがあなたが望んでいることだと思います:

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();

これにより、有効な が に設定されているすべてのMFieldDescrエンティティが検索されます。 MSprachetrue


ちなみに、エンティティのクエリに使用される言語は JPQL です。詳細を知りたい場合に備えてください。

便利なリンクを次に示します。

于 2012-05-13T16:27:31.413 に答える