【发布时间】:2016-11-14 14:08:16
【问题描述】:
我已经尝试了几个小时来解决这个问题,但我找不到解决方案。
我有一个表“Orders”和一个表“Events”,其中 eventId 是 Orders 中的外键。我有一个订单列表,现在只过滤事件,但现在我也希望它按日期过滤,所以我想我会更改查询。
我正在尝试加入事件表,但似乎无法正常工作。 这是查询:
@Transactional
@SuppressWarnings("unchecked")
public List<Orders> getOrders(Integer id){
// java.util.Date utilDate = new SimpleDateFormat("yyyy-MM-dd").parse(test);
// java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
hql = "FROM Orders o join o.eventId e where o.eventId=" +id ;
query = getCurrentSession().createQuery(hql);
return (List<Orders>) query.list();
}
【问题讨论】:
-
您注释掉的代码显示了您如何为日期声明一个变量,但我没有看到任何可以告诉我们您在查询中使用该日期时尝试了什么,或者什么时候发生了什么你试过了;所以很难说出了什么问题。也就是说,我可以建议使用查询参数比将查询片段与变量值连接起来更好,尤其是在日期的情况下,使用参数出错的方法更少。
-
我注释掉了日期,因为这个查询之前没有尝试加入事件表。我这样做是为了看看我是否正确加入.. 这是有效的: hql = "FROM Orders o where o.eventId=" +id ;但这不起作用: hql = "FROM Orders o join o.eventId e where o.eventId=" +id ;
-
join o.eventId e在我看来是错误的。您似乎正在尝试将Orders加入到Orders中的列而不是另一个表。 -
当我这样做时: hql = "FROM Orders o join Event e where o.eventId=" +id ;我得到:休眠:加入的预期路径!内连接例外
-
也许发布您的两个实体类,以便人们可以看到它们的结构