状态字段路径无法解析为集合类型
The state field path cannot be resolved to a collection type
在我的实体模型中,我在 User
和 UserGroup
之间有一个多对多关系
用户是一个普通的 @Entity
class,而 UserGroup
是一个 Java enum
.
映射看起来像这样:
@ElementCollection(targetClass = my.package.UserRight.class, fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
@CollectionTable(name = "MD_USER_RIGHTS", joinColumns = @JoinColumn(name = "REF_USER_ID"))
@Column(name = "USER_GROUP")
@Getter @Setter private Set<UserRight> userGroups;
一切正常,除非我尝试访问通过 JPQL 设置的用户组。我不想将用户实体的所有信息暴露给下一层,所以我编写了一个简单的 JPQL 查询来从我的用户实体创建一些 DTO:
简化版:
public List<UserDTO> findAllActive() {
Query q = em.createQuery("SELECT NEW my.package.UserDTO(m.name, m.id, m.userGroups)
FROM User m ");
return q.getResultList();
}
这会导致以下错误:
Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Problem compiling [SELECT NEW my.package.UserDTO(m.name, m.id, m.userGroups) FROM User m].
[83, 95] The state field path 'm.userGroups' cannot be resolved to a collection type.
你能告诉我我的代码有什么问题以及如何解决吗?
这个
为构造函数表达式定义了 JPQL 语法
constructor_item ::= single_valued_path_expression | scalar_expression | aggregate_expression | identification_variable
您不能将多值路径表达式(集合)作为 JPQL 中构造函数的输入参数。
不知道 EclipseLink 消息想表达什么,介意
在我的实体模型中,我在 User
和 UserGroup
之间有一个多对多关系
用户是一个普通的 @Entity
class,而 UserGroup
是一个 Java enum
.
映射看起来像这样:
@ElementCollection(targetClass = my.package.UserRight.class, fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
@CollectionTable(name = "MD_USER_RIGHTS", joinColumns = @JoinColumn(name = "REF_USER_ID"))
@Column(name = "USER_GROUP")
@Getter @Setter private Set<UserRight> userGroups;
一切正常,除非我尝试访问通过 JPQL 设置的用户组。我不想将用户实体的所有信息暴露给下一层,所以我编写了一个简单的 JPQL 查询来从我的用户实体创建一些 DTO:
简化版:
public List<UserDTO> findAllActive() {
Query q = em.createQuery("SELECT NEW my.package.UserDTO(m.name, m.id, m.userGroups)
FROM User m ");
return q.getResultList();
}
这会导致以下错误:
Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Problem compiling [SELECT NEW my.package.UserDTO(m.name, m.id, m.userGroups) FROM User m].
[83, 95] The state field path 'm.userGroups' cannot be resolved to a collection type.
你能告诉我我的代码有什么问题以及如何解决吗?
这个
为构造函数表达式定义了 JPQL 语法constructor_item ::= single_valued_path_expression | scalar_expression | aggregate_expression | identification_variable
您不能将多值路径表达式(集合)作为 JPQL 中构造函数的输入参数。 不知道 EclipseLink 消息想表达什么,介意