sql查询进入hibernate

时间:2013-06-11 00:09:56

标签: java mysql hibernate

我是hibernate的初学者并且已经阅读了很多但是我坚持这一点。 在我正在实现hibertate的JSF应用程序中,我有一个在我的数据库中工作的SQL查询:

SELECT *
FROM CourseProduct
INNER JOIN Course
ON CourseProduct.number=Course.number
inner join Product
on CourseProduct.product=Product.product;

我正在尝试使用hibernate为我的JSF应用程序做同样的事情。到目前为止,我提出了:

List results = session.createCriteria(Course.class)
     .setFetchMode("product", FetchMode.JOIN)
     .setFetchMode("number", FetchMode.JOIN)
     .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
     .list();

这是正确还是完全错误?另外我如何从结果中访问字段(如果我甚至必须这样做,因为hibernate为我填充类)?我得到的结果似乎只是课程表,Product中主键的值,而不是Product表中的其他2个字段。

修改

我想我解决了自己的问题。看起来上面的代码是正确的,我只是没有意识到为了访问类Product我必须从Course类中的Set访问它!我刚刚使用迭代器在Course类的产品集的get方法中获取我需要的数据。

1 个答案:

答案 0 :(得分:0)

我想我解决了自己的问题。看起来上面的代码是正确的,我只是没有意识到为了访问类Product我必须从Course类中的Set访问它!我刚刚使用迭代器在Course类的产品集的get方法中获取我需要的数据。

更新:我真的解决了这个问题。我刚刚摆脱了休眠。 sql查询工作正常,使用perpared语句获取我的数据,使用常规旧方法(java.sql.DriverManager)获取结果集。 出于某种原因,hibernate驱动程序甚至不喜欢将我的语句用作本机SQL(在尝试转换Integer时一直给我一个异常)。我搜索了问题,他们说这是一个休眠的错误!