我有以下
Order {
Date date,
String title,
List<Item> items
}
Item {
String name,
String qty,
... [other non-related information]
}
我可以编写一个 HQL,它将返回一个包含项目的订单列表。
SELECT order
FROM Orders order
LEFT JOIN FETCH oder.items
WHERE item.qty > 2
我的问题是,我可以将构造函数表达式放在"项目"上以仅获取(名称和数量(吗?
不。但是,您可以做的是使用实体图仅加载您感兴趣的Item
中的那些字段。
请注意:
- 您需要确保启用了实体增强(否则基本属性仍将急切加载(
- 你的应用可能不会尝试访问除
id
、name
和qty
之外的任何Item
属性,否则休眠可能会尝试初始化实体属性的其余部分(将发出数据库查询或引发LazyInitializationException
,具体取决于实体状态(。这包括应用中"不太明显"的部分,例如 JSON 序列化库