我是hibernate的初学者并且已经阅读了很多,但我被困在这一点上。在我正在实现休眠的 JSF 应用程序中,我有这个在我的数据库中工作的 SQL 查询:
SELECT *
FROM CourseProduct
INNER JOIN Course
ON CourseProduct.number=Course.number
inner join Product
on CourseProduct.product=Product.product;
我正在尝试对我的 JSF 应用程序使用 hibernate 做同样的事情。到目前为止,我想出了:
List results = session.createCriteria(Course.class)
.setFetchMode("product", FetchMode.JOIN)
.setFetchMode("number", FetchMode.JOIN)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.list();
这是正确的还是完全错误的?另外,我如何访问结果中的字段(如果我什至必须这样做,因为 hibernate 会为我填充类)?我得到的结果似乎只是课程表,即产品中主键的值,而不是表产品中的其他 2 个字段。
编辑
我想我解决了我自己的问题。看起来上面的代码似乎是正确的,我只是没有意识到为了访问 Product 类,我必须从 Course 类的 Set 中访问它!我只是使用了一个迭代器来获取我在课程类中产品集的 get 方法中需要的数据。