2013-02-26 81 views
2

我正在尝试给我以下错误的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 . 
+0

尝试使用明确的'JOIN':'字符串querySentence =“SELECT DISTINCT E从例E JOIN e.exampleLocalizedData场场WHERE [:现场]。名称,如:过滤器“; TypedQuery actualQuery = entityManager.createQuery(querySentence,Example.class);' – n1ckolas 2013-02-26 13:29:07

+0

给我一个java.lang.UnsupportedOperationException – 2013-02-26 13:44:26

+0

另一个镜头(其他的省略):'FROM示例e JOIN e.exampleLocalizedData [:locale] eld WHERE eld .name LIKE:filter' – n1ckolas 2013-02-26 14:01:59

回答