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

标签 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 .

最佳答案

问题在于尝试将映射值字段用作普通实体。

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

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

关于java - 无法为非实体集合创建元素连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15090115/

相关文章:

java - 使用 Spring Boot 的角色层次结构和 OAuth2 安全性

java - 架构和项目组织

java - HSQLDB:遇到重复的 sql 别名

java - 我的程序计算不正确(Java)

java - return() 和简单 return 之间的区别

hibernate - 使用 Maven 从现有数据库生成 JPA2 实体

hibernate - JPA实体关系: Cascade on delete

java - JPA EntityGraph 如何允许在运行时选择实体图?

java - JPA 标准 - 获取子实体而不是根实体

java - 正确访问父级方法和变量?