gpt4 book ai didi

nhibernate - 我可以使用 HQL 预先加载属性吗?

转载 作者:行者123 更新时间:2023-12-05 00:06:08 26 4
gpt4 key购买 nike

我正在尝试解决如何在以下 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)
)

订单和客户之间通常存在多对一的关系。

如果可能的话,我想在查询中执行此操作,而不是在映射中 - 如在“join fetch ...”中

也许查询会被重构为一个连接,我有一个心理障碍。

有任何想法吗?

最佳答案

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)

为此,如果 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)
)

编辑:

关于什么:
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)
)

关于nhibernate - 我可以使用 HQL 预先加载属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3684376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com