无法为非实体集合创建元素连接

时间:2013-02-26 13:18:14

标签: java hibernate jpa hql

我正在尝试一个给出以下错误的typedQuery:  java.lang.IllegalArgumentException:无法为非实体集合创建元素连接!

我正在使用JPA 2.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 .

1 个答案:

答案 0 :(得分:0)

问题在于使用map-value字段作为普通实体。

为此,您需要使用JPA 2 KEY()VALUE()函数。

您可以在此处找到更多信息:https://stackoverflow.com/a/9311242/655756

相关问题