[英]Hibernate JoinColumn with a POJO constructor (without an Entity)
我有一個看起來像這樣的 POJO
@AllArgsConstructor
public class POJO {
@Getter
@Setter
private String name;
@Getter
@Setter
private int age;
}
我使用這個 POJO 從 hql 查詢中設置值,如
session.createQuery("Select new fullyQualifiedName.POJO(emp.name, emp.age) From Employee emp where emp.id = 1");
最近,有人要求我向 POJO 添加一個 List 屬性。 如中,
@AllArgsConstructor
public class POJO {
@Getter
@Setter
private String name;
@Getter
@Setter
private int age;
@Getter
@Setter
private List<Hobby> hobbies;
}
但是,此時,我不知道如何加入愛好表,以列表的形式獲取值並傳遞給構造函數。
有哪些可能的方法來實現這一目標?
我不認為你可以用new
關鍵字來實現你想要的。 也許其他人可能對這個結構更有幫助,但我還沒有看到任何提供帶有new
關鍵字的集合的示例。 我認為這個結構有一些局限性。
至於我提出的解決方案:
將您的查詢更改為Select emp, h From Employee emp left join Hobby h where emp.id = 1
。 您還可以根據您的用例使用內部聯接。
為您的查詢 object 設置自定義 ResultTransformer。 就像是:
query.setResultTransformer(
new ResultTransformer() {
@Override
public Object transformTuple(Object[] tuple, String[] aliases) {
return tuple;
}
@Override
public List transformList(List collection) {
//Each member of collection is a Object[], we are working at row level
//You should process the collection, eliminate duplicates etc and return a
//List containing a single POJO object
}
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.