【问题标题】:How to join two tables in Spring and Hibernate using a criteria query如何使用条件查询在 Spring 和 Hibernate 中连接两个表
【发布时间】:2016-06-06 10:05:24
【问题描述】:

我想通过使用条件查询在 Spring + Hibernate 应用程序中加入两个表,但它不起作用。我在下面包含了我的表格和 DAO 代码。

用户

 ----------------------------------------------------------
| Column                                              |    |
 ----------------------------------------------------------
| id                                                  | PK |
| address                                             |    |
| mobile                                              |    |
| otp                                                 |    |
| password                                            |    |
| user_name                                           |    |
| user_type                                           |    |
 ----------------------------------------------------------

跟踪

 ----------------------------------------------------------
| Column                                              |    |
 ----------------------------------------------------------
| id                                                  | PK |
| location                                            |    |
| product_id                                          |    |
| qrdate                                              |    |
| serial                                              |    |
| userId                                              | FK |
 ----------------------------------------------------------

DAO代码

Criteria crit = currentSession().createCriteria(QrCodeList.class);

Criteria prdCrit = crit.createCriteria("user");
prdCrit.add(Restrictions.eq("serial","F1VKCva01"));

List results = crit.list();

运行条件查询总是会引发错误。

【问题讨论】:

  • 错误消息包含有关问题的重要提示。永远不要只说“它给出了一个错误”——包括准确和完整的错误信息。那么,您收到的错误消息到底是什么?
  • 什么是QrCodeList?它对应于哪个表?您可以通过userId 列从Tracking 表访问User 表,但是您希望如何通过在User 上创建条件查询从User 表转到Tracking 表然后指定要查找的serial 号码?
  • 它将显示 org.hibernate.QueryException: could not resolve property: user of: com.virtual.applets.mpark.entity.QrCodeList

标签: java spring hibernate


【解决方案1】:

你需要使用别名

Criteria crit = session.createCriteria("user");

crit.createAlias("user.tracking", "tracking")
crit.add(Restrictions.eq("tracking.serial","F1VKCva01"));

List results = crit.list();

您需要有从UserTracking 的关联。

【讨论】:

  • 当我使用你的代码时,它显示局部变量 crit 可能没有被初始化请告诉我该怎么做?
  • @sathish 抱歉,我修好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2017-11-14
  • 1970-01-01
相关资源
最近更新 更多