- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
非常感谢您帮助将以下 SQL 语句转换为有效的 HQL 语句。我尝试了几个小时但没有成功:
SELECT * FROM master as m left outer join (select * from child as c where c.id = (select max(d.id) from child as d where d.MasterFk = c.MasterFk) )as b ON m.id = b.MasterFk;
public class Master {
private Long id;
private Collection childs;
...
}
public Class Child {
private Long id;
private Master master;
}
在 Hibernate 映射文件中,我通过标准 SET(-映射)将主机映射到子机,并且从子机到主机的关系是多对一关联。 (这是有效的。)
==> 目标是仅使用最新的子记录(=仅一条记录!)来查询主记录,并将其正确初始化为子记录集中的唯一元素...
无论我尝试什么,我都惨遭失败。
非常感谢!
最佳答案
我不确定你能做到这一点。我看到的问题不是查询,而是初始化。如果您不返回 Set 的所有对象,那么我不确定 Hibernate 是否可以初始化 Set。
在 Hibernate 逻辑中,如果对象图中提供了一个对象(此处为 Set)(不为 null,无代理),则它应该是完整的。 仅包含一个元素的 Set,因此无法加载其他元素,因为它不是代理,不符合 Hibernate 逻辑。在 Hibernate 逻辑中,Set 要么是 null,要么是代理,要么是完全加载的(除了大型集合的高级情况,它们是批量加载的......)。
不过我理解你的需求。请注意,您需要确保将接收此对象图的代码都能够理解该 Set 并不是真正的一个!
我建议两种选择:
另一种方法是查询所需的数据,然后在特定的 Java 代码中填写对象。
查询可以更简单,例如:
SELECT m.id, max(c.id)
FROM master as m
left join m.childs as c
group by m.id
java代码会实例化你想要的List<Object[]>
结果。
或者,你可以给 Master 一个合适的构造函数,并使用 new (返回 List<Master>
):
SELECT new Master(m.id, max(c.id))
FROM master as m
left join m.childs as c
group by m.id
您还可以在 Master 上有一个最新子成员 (latestChild)。可以指定映射以完全按照您的需要加载它。
我建议一个公式,它的优点是只读。请注意,公式采用 SQL,而不是 HQL。插入与您的子请求相对应的 SQL。
关于sql - 休眠 HQL : Converting a SQL Statement to HQL (with subselects/joins),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1442728/
我有两个表 项目 confirmmasterdetail 我想从item表中选择不在confirmmasterdetail表中的记录当我运行此查询时,它返回空结果集。 SELECT itemId ,
所以我想为一个项目做以下事情。 我有 3 个表。前两个我们现在关心(第三个是为了让您更好地理解): author {id, name} authorship {id, id1, id2} paper
我有 2 张 table 交易表 +----+----------+-----+---------+---- | TID | CampaignID | DATE |
我有 2 个表:订单和预订。 订单表包含来自客户的唯一订单。每个客户都预订了 1 到 5 年的储物柜,因此预订表可以包含 1 到 5 行 pr。顺序(每年 1 行)。预订表中的每一行都包含 end_d
我正在尝试从 sql 查询中获取选择的逆。这是我的场景,我通过查询选择与一个家庭相关的付款,那些在过去 6 个月内捐款的人被认为是活跃的。我对过去 6 个月内没有条目的人感兴趣。 我可以选择过去 6
我有三个表: 帖子:id, title, authorId, text 作者:id, 名字, 国家 评论:id, authorId, text, postId 我想运行一个 mysql 命令,该命令选
我正在为这种简单的和平代码而伤脑筋,它不想工作,而且我想不出任何其他解决方案... 你能帮忙让它工作吗? SELECT chart FROM chart WHERE (select count(use
我正在尝试生成一份销售报告,其中列出每个产品 + 给定月份的总销售额。这有点棘手,因为产品价格可能会在整个月内发生变化。例如: 在 1 月 1 日和 1 月 15 日之间,我的公司以每个 10 美元的
我是 hibernate 的新手。我需要了解以下问题: (1) hibernate mapping中的subselect是什么? (2) 如何在 hbm 文件中映射 subselect? (3) 如果
我有一个这样的表: +--------------+--------------+--------------+ | userid | username | proxy
我正在尝试做这样的事情,但使用 Criteria 而不是 HQL: select user from User where user in ( select user from UserDom
我有两个表 [Users] 和 [Teams]。我的用户表看起来像这样 [ID][E-Mail]。我的 Teams 表看起来像这样 [Team][UserID]。 我需要像这样做一个子选择: SELE
有一些我正在努力工作的选择 SELECT DISTINCT a.client_key, client_name FROM Bloggers AS a LEFT JOIN BloggersPosts A
我有两个表,我想减少比较两个表之间的记录所花费的时间。我无法内部连接我的两个表,因为它们都是纵向表,这意味着 animalid 可以重复多个,即使它对于 milk 记录是唯一的 表1(我的错误表) +
我有两个具有相同字段但来自不同表的对象(foo_something 和 bar_something 实际上不是普通表,有几个连接操作的结果)。我使用 @Subselect hibernate 注释来获
有什么方法可以从模式名称取自主选择中字段之一的值的模式进行子选择?有点像这样: create schema a; create table a.foo(id int); create schema b
使用 postgresql 我有一个表 A,其中包含列 company_name、department_name、一些其他数据和 department . 我有另一个表 B,其中只有 company_
此查询未在合理时间内完成: mysql> select * from prices where symbol='GOOG' and date in (select max(date) from pri
所以,我有一张捐款表。它存储一个 $ 值和一个列框,他们可以在其中选择货币或实物捐赠。实物捐赠可以有美元,但通常没有。实物捐赠是指有人捐赠了实物元素,例如割草机、 table 、椅子等。然后我有捐助者
当查询包含数百万文档的 MongoDB 集合以及对非索引字段进行过滤或排序时,查询运行速度太慢,因为 mongo 需要扫描整个集合。在 Mysql 上,这可以通过执行仅过滤最后 40k 行的子选择来实
我是一名优秀的程序员,十分优秀!