2

次のエラーが発生するtypedQueryを試しています:java.lang.IllegalArgumentException:非エンティティのコレクションの要素結合を作成できません!

JPA2.0を使用しています

私のコード:

@Entity
public class Example {
    @ElementCollection(targetClass=ExampleData .class,fetch = FetchType.EAGER)
@MapKeyColumn(name = "locale_key")
@CollectionTable(name = "exampleLocalizedData", joinColumns = @JoinColumn(name = "exampleId"))
     private Map<String, IExampleData> exampleLocalizedData;
}

@Embeddable
public class ExampleData {
     private String data;
     .....
} 

私の質問:

String querySentence = "SELECT DISTINCT e FROM Example e WHERE e.exampleLocalizedData[:locale].name LIKE :filter ";
        TypedQuery<Example > actualQuery = entityManager.createQuery(querySentence, Example .class);

私の質問は、これを行うための正しいクエリはどれですか?

よろしく。

編集:

知りたい場合の最終クエリ:

select DISTINCT e FROM Example e join e.exampleLocalizedData r WHERE index(r) = :locale AND r.name LIKE :filter .
4

1 に答える 1

0

問題は、マップ値フィールドを通常のエンティティとして使用しようとすることです。

このためには、JPA 2KEY()VALUE()関数を使用する必要があります。

ここで見つけることができる詳細情報: https://stackoverflow.com/a/9311242/655756

于 2013-02-26T14:38:14.867 に答える