我有4个实体:
用户
,教师
,学生
,课程
和4个表:
现在我想在一个查询中选择所有有课程的用户(如果存在的话)select u from User u left join fetch u courses c
(注意用户没有课程)这个select生成如下所示:
select
...
from
T_USER user0_
left outer join
T_TEACHER_COURSE course1_
on user0_.USERID_=courses1_.TEACHER_
left outer join
T_COURSE course2_
on courses1_.LANE_=course2_.COURSENAME_
where
user0_.GROUP_=?
您可以清楚地看到,Hibernate没有与t_student_course表连接
我正在使用Hibernate 4.1 Final
问题:Hibernate支持这样的查询吗
a)如果支持,那么为什么它不为student
实体获取课程?
b)如果不支持,我如何选择所有的用户与他们的课程使用JPQL?
由于u.cources
可以是student.cources
或teacher.cources
,Hibernate通过在其元数据中选择与此名称的第一个(或最后一个)关联来解决歧义。
如果courses
集合的名称在两个子类中不相同,则可能会起作用。例如,可以定义student.attendedcourses
和teacher.teachedcourses
。
否则,您将不得不发出两个查询(一个针对教师,一个针对学生),并加入结果列表。或者必须在用户实体中拉出关联。
假设类“X”映射到表“X”,类“A”映射到表“A”,类“B”映射到表“B”。 表X结构:(X_ID,一些其他列表A结构:(A_Id,X_Id,一些其他列)表B结构:(A_Id,一些其他列)...表B也有A_Id “B”类扩展了“A”类。我们将它们的映射文件都设置为: “A”类父映射文件: “B”类映射文件: 现在,我有一个SQL查询,如下所示,我需要使用hibernate criteria API
我有两个实体BillingAddress和ShippingAddress映射到具有鉴别器类型列的表地址。 我能够使用不同的类型值在DB中成功保存/更新两个地址类型。 我面临的问题是当我查询地址表时,如下所示: 这工作正常,但查询ShippingAddress会引发非均匀查询结果异常,即结果中同时包含ShippingAddress和Billingaddress。请让我知道,我应该怎么做。
1. 前言 本节课程和大家一起学习继承映射。通过本节课程的学习,你将了解到: 什么是继承映射; 实现继承映射的 3 种方案。 2. 继承映射 学习继承映射之前,需要搞清楚什么是继承映射? 继承是 OOP 中的概念,其目的除了复用代码之外,还用来描述对象在现实世界中的关系。 为了更好地讲解继承映射,咱们再在数据库中创建一张老师表。数据库中多了一张表,按照使用 Hibernate 的套路,理所当然应该
并尝试通过Hibernate使用策略连接实现继承,但当我使用此策略时,我收到异常: 奇怪的是,如果我选择另一个策略(单表或TABLE_PER_CLASS),错误不会出现
我在Hibernate中有道传承,下面是代码: 用户DAO: 我有一个域类用户和两个子类用户:Customer和Sales。我有两个dao类,分别用于客户和销售。 用户DAO: 客户道: 销售DAO: 我的问题是,当我使用CusterDap调用方法getUserByUsername()(继承自BaseDaoImpl)与销售的用户名(拥有用户名的用户是SalesRep的实例,而不是客户)时,它会抛出
假设类“X”映射到表“X”,类“A”映射到表“A”,类“B”映射到表“B”。 表X结构:(X\u ID,其他一些列表A结构:(A\u ID,X\u ID,其他一些列)表B结构:(A\u ID,其他一些列)。。。表B也有一个\u Id “B”类扩展了“A”类。我们将它们的映射文件都设置为: “A”类父映射文件: “B”类映射文件: 现在,我有一个SQL查询,如下所示,我需要使用Hibernate标准