gpt4 book ai didi

hibernate - 这可能吗 : JPA/Hibernate query with list property in result?

转载 作者:行者123 更新时间:2023-12-03 23:51:29 24 4
gpt4 key购买 nike

在 hibernate 中我想运行这个 JPQL/HQL 查询:

select new org.test.userDTO( u.id, u.name, u.securityRoles)
FROM User u
WHERE u.name = :name

userDTO 类:
public class UserDTO {
private Integer id;
private String name;
private List<SecurityRole> securityRoles;

public UserDTO(Integer id, String name, List<SecurityRole> securityRoles) {
this.id = id;
this.name = name;
this.securityRoles = securityRoles;
}

...getters and setters...
}

用户实体:
@Entity
public class User {

@id
private Integer id;

private String name;

@ManyToMany
@JoinTable(name = "user_has_role",
joinColumns = { @JoinColumn(name = "user_id") },
inverseJoinColumns = {@JoinColumn(name = "security_role_id") }
)
private List<SecurityRole> securityRoles;

...getters and setters...
}

但是当 Hibernate 3.5 (JPA 2) 启动时,我收到此错误:
org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate 
constructor on class [org.test.UserDTO] [SELECT NEW org.test.UserDTO (u.id,
u.name, u.securityRoles) FROM nl.test.User u WHERE u.name = :name ]

结果是包含列表(u.securityRoles)的选择是不可能的吗?我应该只创建 2 个单独的查询吗?

最佳答案

没有 NEW 的查询(选择标量值 集合值路径表达式)无效,所以我不认为添加 NEW将使事情发挥作用。

作为记录,这就是 JPA 2.0 规范在 部分所说的内容。 4.8 选择条款 :

The SELECT clause has the following syntax:

select_clause ::= SELECT [DISTINCT] select_item {, select_item}*
select_item ::= select_expression [ [AS] result_variable]
select_expression ::=
single_valued_path_expression |
scalar_expression |
aggregate_expression |
identification_variable |
OBJECT(identification_variable) |
constructor_expression
constructor_expression ::=
NEW constructor_name ( constructor_item {, constructor_item}* )
constructor_item ::=
single_valued_path_expression |
scalar_expression |
aggregate_expression |
identification_variable
aggregate_expression ::=
{ AVG | MAX | MIN | SUM } ([DISTINCT] state_field_path_expression) |
COUNT ([DISTINCT] identification_variable | state_field_path_expression |
single_valued_object_path_expression)

关于hibernate - 这可能吗 : JPA/Hibernate query with list property in result?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2678634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com