dom*_*mer 4 nhibernate select hql eager-loading
我正在尝试解决如何在以下HQL查询中急切加载客户:
select order.Customer
from Order as order
where order.Id in
(
select itemId
from BadItem as badItem
where (badItemType = :itemType) and (badItem.Date >= :yesterday)
)
Run Code Online (Sandbox Code Playgroud)
订单和客户之间通常有多对一的关系.
我想这样做是在查询,而不是在映射,如果可能的话 - 因为在"连接抓取......"
也许查询会被重构为一个连接,我有一个心理障碍.
有任何想法吗?
select customer
from BadItem as badItem
join fetch badItem.Order as order
left join fetch order.Customer as customer
where (badItemType = :itemType) and (badItem.Date >= :yesterday)
Run Code Online (Sandbox Code Playgroud)
为此,您需要在BadItem与Order无关的情况下添加BadItem和Order之间的关系,或者使用inner join带有额外条件的关系(在使用备选2时注意性能).
替代方案:
select customer
from Order as order
join fetch order.Customer as customer
where order.Id in
(
select itemId
from BadItem as badItem
where (badItemType = :itemType) and (badItem.Date >= :yesterday)
)
Run Code Online (Sandbox Code Playgroud)
编辑:
关于什么:
select customer
from Order as order
join fetch order.Customer customer
join fetch customer.orders
where order.Id in
(
select itemId
from BadItem as badItem
where (badItemType = :itemType) and (badItem.Date >= :yesterday)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5390 次 |
| 最近记录: |