对嵌套表非常困难的hibernate查询

时间:2014-12-08 13:44:09

标签: hibernate java-ee

好的,我的问题与以下问题非常相似:How can I use Hibernate Criteria's to query nested tables?

但他们提供的解决方案并不适用于我,即使它看起来完全相同。我的做法有何不同?

这是我的具体问题:

我有3张桌子:

COURSE
-----------------------------------------
uid
name
course_catalog_uid

COURSE_CATALOG
-----------------------------------------
uid
name
product_type_uid

PRODUCT_TYPE
-----------------------------------------
uid
name

我有1或2个product_type_uid,我需要获得COURSE的列表,其中(向下钻取嵌套表格)PRODUCT_TYPE.uid =我提供的2个初始值中的任何一个。

我现在谷歌搜索了3个小时,没有找到任何作品。我真的很感激我能得到的任何帮助。我筋疲力尽,几乎是COB。我将在明天上午首先检查/评论所有回复。

同样以防万一: 我正在开发一个在WAS上运行的Java EE Web应用程序(使用java 1.7)

编辑:关于我链接到的相关问题,如果我只提供一个product_type_uid,他们的解决方案甚至都不起作用。这是我的代码:

Criteria crit = session.createCriteria(Course.class);
List<Course> list = crit.createAlias("course_catalog", "cclog")
.createAlias("cclog.product_type_uid", "ptypeuid", 
Criteria.INNER_JOIN, Restrictions.eq("ptypeuid", ptype.getUid()).list();

运行时会产生以下错误:

[12/9/14 7:53:47:294 SAST] 000002fd LocalTranCoor E   WLTC0017E: Resources rolled back due to setRollbackOnly() being called.
[12/9/14 7:53:47:294 SAST] 000002fd webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[/operations/operationshome.jsp]: org.hibernate.QueryException: could not resolve property: course_catalog of: com.companyname.model.Course
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:83)

所以“org.hibernate.QueryException:无法解析属性:course_catalog”

我猜这意味着我的课程表中没有course_catalog字段(没有) 但是如何在我的查询中链接不同的表?

1 个答案:

答案 0 :(得分:0)

您是否将某些POJO映射到这些表格? 我会做的是:

  1. 使用类型为CourseCatalog的属性创建类课程,该属性又具有ProductType类型的属性。
  2. 将这些类映射到数据库。如果它是遗留数据库,而不是在映射(annotations或hbm)中调整表和列名称。如果不是让hibernate生成表格。
  3. 要获取具有相关对象的Course实例,只需在hibernate会话实例上执行get(Class,id)。如果您希望首先加载子对象,请不要忘记禁用延迟行为。