2016-05-31 64 views
0

我有一个查询,如:如何在hibernate中使用标准创建内部查询?

SELECT * 
FROM mars_india.leave_x_user 
WHERE user_id in (SELECT user_id FROM mars_india.user where vendor_id=16); 

我从计算器,但无法以下解决方案来理解:

criteria =criteria.createCriteria(user.USER_DOMAINS) 
    .add(Restrictions.eq(UserDomain.DOMAIN, domain)); 

回答

0

嗯...... 首先你要明白,你不不必使用子查询来获取相同的信息。

尝试此查询:

SELECT lxu.* FROM mars_india.leave_x_user lxu 
LEFT JOIN mars_india.user miu 
ON lxu.user_id = miu.user_id 
WHERE miu.vendor_id=16 

应该产生相同的结果作为查询。

JOIN声明是神奇的。简而言之:它让两个表格像一个表格一样工作。 因此,现在您可以使用vendor_id查询此连接表,并仅返回连接表的一部分,作为结果记录到“leave_x_user”表中。

请参阅,您只需要一个限制条件的查询即可获取相同的数据。

这就是你通过使用这个标准查询基本上做的。

为了学习标准查询的语法,看看这里: https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html

如果您想了解更多具体信息,请发表您的域模型(映射到表中的类)。

快乐编码! :D

+0

谢谢你的回答.... –

相关问题