java - sql查询进入hibernate

标签 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 为我填充了类)?看来我得到的结果只是类(class)表、产品中主键的值,而不是产品表中的其他2个字段。

编辑

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

最佳答案

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

更新:我确实解决了这个问题。我刚刚摆脱了 hibernate 。 sql 查询工作正常,使用准备好的语句获取我的数据,并使用常规的旧方式(java.sql.DriverManager)获取结果集。 由于某种原因,hibernate 驱动程序甚至不喜欢使用我的语句作为 native SQL(在尝试转换整数时不断给我一个异常)。我用谷歌搜索了这个问题,他们说这是 hibernate 中的一个错误!

关于java - sql查询进入hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17034733/

相关文章:

java - Android 将文件从内部存储复制到外部

python - 具有相同键的多个值,值读取为以 '/' 分隔的字符串,如何根据键拆分值?

java - 如果我的目录名包含空格,Hibernate 无法加载 JAR 文件!

java - EhCache 溢出到特定路径的磁盘

java - hibernate/"absolutely necessary with bi-directional links"?

java - 我可以根据 Java 泛型中方法的类参数返回 String 或 List

java - java 和 jsp 中的搜索查询不起作用

java - 需要方法建议 : Database insert from 1 db to another

php - mysql_real_escape_string 不转义"

mysql - SQL - 提取列中的特定数字模式