Java 使用集合休眠动态实例化,可能吗?
我想使用一个动态实例化编写一个hql查询,其中一个参数是列表 简化示例: 具有动态实例化的HQL查询:Java 使用集合休眠动态实例化,可能吗?,java,hibernate,orm,hql,Java,Hibernate,Orm,Hql,我想使用一个动态实例化编写一个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,
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;
...
}
公共类用户{
@列(name=“name”)
字符串名;
@ManyToMany(targetEntity=Contacts.class,fetch=FetchType.EAGER)
@JoinTable(name=“用户\部门\联系人”,
joinColumns=@JoinColumn(name=“DEPARTMENT\u ID”),
inverseJoinColumns=@JoinColumn(name=“USER\u ID”))
私人名单联系人;
...
}
正如你们所看到的,我想要的就是创建一个新的对象,它有一些属性和实体集合
我可以理解Hibernate需要一个或多个查询来实现这一点,因为这将为每个实体生成多个结果行
有人知道是否可以创建一个新对象,它是属性和集合的组合吗 对不起,这是不可能的。根据JPA规范 由指定的查询结果的类型 查询的SELECT子句是 实体抽象模式类型,一个 状态字段类型-不是集合-, 聚合函数的结果, 建设的结果 操作,或其中的某个序列 您可以改为使用以下选项:
select DISTINCT new x.y.UserDto(u) from User u LEFT JOIN FETCH u.contacts
因此,通过这种方式,您可以获取联系人的用户