我想编写一个使用动态实例化的 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 需要一个或多个查询来实现这一点,因为这将为每个实体生成多个结果行。
有谁知道是否可以创建一个由属性和集合组合而成的新对象?