2013-05-07 89 views
0

请如何写这个简单的工作选择,在Hibernate查询,或标准休眠加入

SELECT * FROM `call` AS c JOIN `event_customer` AS e ON c.customer_id = e.customer_id WHERE e.dgdelete = FALSE AND c.eventruletype_id = 1 AND e.event_id = 74 AND c.callactivity_id = 3 AND e.calltype = 2 

我发现已经有很多建议,但没有任何帮助我呢。

它可能是什么与Hibernate映射?

谢谢。

PS: 这是行不通的

query = session.createQuery("select c from " + Call.class.getSimpleName()+ " as c " + EventCustomer.class.getSimpleName()+ " as e where e.customer_id = c.customer_id and e.event_id = 74"); 

也是这个工作不

query = session.createQuery("select c from " + Call.class.getSimpleName()+ " as c join " + EventCustomer.class.getSimpleName()+ " as e where e.customer_id = c.customer_id and e.event_id = 74"); 

而且这个

query = session.createQuery("select c from " + Call.class.getSimpleName()+ " as c join " + EventCustomer.class.getSimpleName()+ " as e on e.customer_id = c.customer_id where e.event_id = 74"); 

而且这个

query = session.createQuery("select c from " + Call.class.getSimpleName()+ " as c left join " + EventCustomer.class.getSimpleName()+ " as e on e.customer_id = c.customer_id where e.event_id = 74"); 

,并在某些情况下,我得到这个错误

+0

您以何种方式查询不起作用?会发生什么与你的预期?什么是数据库模式和Java数据模型? – Adrian 2013-05-07 16:08:09

回答

0

这应该工作。 (用逗号替换JOIN)

Query query = session.createQuery("select c from " + Call.class.getSimpleName() + " as c , " + EventCustomer.class.getSimpleName() + " as e where e.customer.id = c.customer.id and c.event.id = 74"); 
2

不要连击,而使用标准:

Criteria crit = session.createCriteria(Call.class, "c") 
    .createCriteria("eventCustomerDto","e") 
    .add(Restrictions.eq("event_id",74)); 
List<Call> list=crit.list(); 

的代码可能有错别字,但多数民众赞成这个想法。另外,对于我的例子,我认为Call和EventCustomer之间的Call Hibernate映射存在一对多关系。

+0

这个人不好,你如何写下createCriteria(*)。createCriteria? – 2013-05-07 16:56:52

+0

它是条件实例的函数,它返回指定的Dto的另一个条件,我用它来添加限制条件。 – Ziul 2013-05-07 17:19:05