【发布时间】:2013-09-02 04:29:38
【问题描述】:
我在 oracle 中编写了这个查询
Student_Master 有这些字段stud_id,stud_name。
Student_detail 有course_id,course_name,cou_stud_id 等等。
如果student_detail表cou_stud_id为空或空,我需要从这两个表中选择记录,这意味着选择该条件的所有匹配记录。
SELECT stud_id,stud_name,course_name ,course_id FROM STUDENT_MASTER,STUDENT_DETAIL WHERE stud_id(+)=cou_stud_id.
如何写入 HQL 查询? 这是我的原始场景 我有两个 hbm 文件 ADVMAgencyMaster.hbm.xml,ADVRoheader.hbm.xml 对应的 pojo 类是 ADVMAgencyMaster.java,ADVroheader.java。
匹配两个表中条件为 oracle 中的 MAMAID(+)=TROHAMAID 的记录。请告诉 HQL 中的编写者如何
【问题讨论】:
-
在不知道如何将表映射到实体的情况下进行讨论是没有意义的。一旦你正确映射到你的实体(包括关系),这应该是 HQL 的一个非常基本的用法,你应该从任何 Hibernate 介绍材料中学习。
-
解释如何在oracle和HQL中使用左外连接(+)。MyMapping工作完美。stud_id是主要的,co_stu_id是外键。
-
@karthik.A.M 请检查一下,如果你的映射没问题,你的目标没什么大不了的。即使是谷歌上的一个小研发也可能会帮助你。
-
@karthik.A.M O-R 映射不仅仅是将表对应于实体,还将每列对应于一个字段。显然你仍然有赤字映射
-
Query qry=Session.createQuery("SELECT SM.stud_id,SM.stud_name,SD.course_name ,SD.course_id FROM STUDENT_MASTER SM LEFT JOIN SM.STUDENT_DETAIL SD WHERE SM.stud_id=SD.cou_stud_id " )。在这个STUDENT_MASTER中,STUDENT_DETAIL是对应表的bean类