gpt4 book ai didi

java - 带有集合的 Hibernate 动态实例化,有可能吗?

转载 作者:行者123 更新时间:2023-12-04 07:06:31 25 4
gpt4 key购买 nike

我想使用动态实例化编写一个 hql 查询,并将列表作为其参数之一。

简化示例:

具有动态实例化的 HQL 查询:

select new x.y.UserDto(u.name, u.contacts) from User u where u.xyz=:param1 ...

我的 dto 类构造函数是:
public class UserDto {
private String name;
private List contacts;

public UserDto(String name, List contacts) {
this.name = name;
this.contacts = contacts;
}
...
}

和实体映射:
public class User {
@olumn(name="NAME")
String name;

@ManyToMany(targetEntity= Contacts.class, fetch = FetchType.EAGER)
@JoinTable(name="USER_DEPARTMENT_CONTACTS",
joinColumns=@JoinColumn(name="DEPARTMENT_ID"),
inverseJoinColumns=@JoinColumn(name="USER_ID"))
private List<Contacts> contacts;

...
}

因此,正如您所看到的,我想要的只是创建一个具有实体的某些属性和集合的新对象。

我可以理解 Hibernate 需要一个或多个查询来实现这一点,因为这将为每个实体生成多个结果行。

有谁知道是否可以创建一个由属性和集合组合而成的新对象?

最佳答案

抱歉,这是不可能的。根据JPA规范,

The type of the query result specified by the SELECT clause of a query is AN ENTITY abstract schema type, A STATE-FIELD type - NOT A COLLECTION -, the result of an aggregate function, the result of a construction operation, OR SOME SEQUENCE OF THESE.



您可以改用以下内容:
select DISTINCT new x.y.UserDto(u) from User u LEFT JOIN FETCH u.contacts

因此,通过这种方式,您可以获取带有联系人的用户

关于java - 带有集合的 Hibernate 动态实例化,有可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1043438/

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