パラメータの 1 つとしてリストを使用した動的インスタンス化を使用して、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 がこれを達成するには、エンティティごとに複数の結果行が生成されるため、1 つ以上のクエリが必要であることを理解できます。
プロパティとコレクションの組み合わせである新しいオブジェクトを作成できるかどうかは誰にもわかりませんか?