我试图通过使用Hibernate的Detached Criteria Class来连接三个表。
我有三张桌子,分别是STUDENT,STUDENT_CORRESPOND,STUDENT_COURSES
表的主键是
**Table Names** **Primary Keys**
STUDENT INQRY_ID
STUDENT_CORRESPOND STUDENT_CRSP_ID
STUDENT_COURSES COURSE_CD
选择*来自 db01.STUDENT INNER JOIN db01.STUDENT_CORRESPOND ON db01.STUDENT.INQRY_ID = db01.STUDENT_CORRESPOND.INQRY_ID INNER JOIN db01.STUDENT_COURSES ON db01.STUDENT_COURSES.COURSE_CD = db01.STUDENT.COURSE_CD
我的数据库中上述查询的实际DB结果为250。
我想通过使用分离标准来实现上述查询。
在StudentDO.hbm.xml中,我添加了以下代码,但是当我运行我的应用程序时,它没有显示任何结果.i.e
结果计数为零。
StudentDO.hbm.xml
<set name="StudentIds" lazy="true" inverse="true" cascade="none" sort="unsorted"
batch-size="10">
<key><column name="INQRY_ID" /></key>
<one-to-many class="com.test.StudentCorrespondenceDO"/>
</set>
<set name="coursecodes" lazy="true" inverse="true" cascade="none" sort="unsorted" batch-size="10">
<key><column name="COURSE_CD"/></key>
<one-to-many class="com.test.StudentCoursesDO"/>
</set>
我在StudentDO.Java文件中添加了受尊重的setter和getter方法。
DetachedCriteria detachedCriteria =DetachedCriteria.forClass(StudentDO.class);
detachedCriteria.createCriteria("StudentIds","stuids",Criteria.INNER_JOIN);
detachedCriteria.createCriteria("coursecodes","coursecds",Criteria.INNER_JOIN);
List l = getHibernateTemplate().findByCriteria(detachedCriteria);
System.out.println(l.size());
结果为零。
But When I have coded like this (Only two tables joining )
----------------------------------------------------------------------
select *from
db01.STUDENT
INNER JOIN db01.STUDENT_CORRESPOND
ON db01.STUDENT.INQRY_ID =db01.STUDENT_CORRESPOND.INQRY_ID
实际数据库结果计数为10。
我想通过使用分离标准来实现上述查询。
StudentDO.hbm.xml
<set name="StudentIds" lazy="true" inverse="true" cascade="none" sort="unsorted"
batch-size="10">
<key><column name="INQRY_ID" /></key>
<one-to-many class="com.test.StudentCorrespondenceDO"/>
</set>
我在StudentDO.Java文件中添加了受尊重的setter和getter方法。 当我运行我的应用程序时,它显示正确的结果。那是10
DetachedCriteria detachedCriteria =DetachedCriteria.forClass(StudentDO.class);
detachedCriteria.createCriteria("StudentIds","stuids",Criteria.INNER_JOIN);
List l = getHibernateTemplate().findByCriteria(detachedCriteria);
System.out.println(l.size());
因为,我提到两个表的连接工作正常。但是三个表连接不起作用。 请任何人都可以为我的问题提供解决方案。这将是你身边很有帮助的。
非常感谢。