日期:2014-05-20  浏览次数:20992 次

hql 语句 带 in 的子查询,sql语句测试没有问题,但是hql语句查不出数据来。
public List<Users> getcontactList(Integer userId) throws Exception{
List<Users> list = null;
  //通过联系人表 Contacts 里面的userId 查询 USers表里面的用户信息。
String hql ="from Users u where u.userId in (SELECT c.friendId FROM Contacts c where c.userId =:contactuserId)";
Session session = null;
try 
{
session = super.getSessionFactory().openSession();
Query query = session.createQuery(hql);
query.setInteger("contactuserId",userId);
//query.setParameters();  
list = query.list();

return list;

catch (Exception ex)
{
throw new HibernateException(ex);

finally
{
if (session != null) 
{
session.close();
}
}
拜托大家了。

------解决方案--------------------
public List <Users> getcontactList(Integer userId) throws Exception{ 
List <Users> list = null; 
//通过联系人表 Contacts 里面的userId 查询 USers表里面的用户信息。 
String hql ="select * from Users u where u.userId in (SELECT c.friendId FROM Contacts c where c.userId =:contactuserId)"; 
Session session = null; 
try 

session = super.getSessionFactory().openSession(); 
Query query = session.createQuery(hql); 
query.setInteger("contactuserId",userId); 
//query.setParameters();
list = query.list(); 

return list; 

catch (Exception ex) 

throw new HibernateException(ex); 

finally 

if (session != null) 

session.close(); 



------解决方案--------------------
你确定没有查询出数据吗?你有做断点看看list到底有没有数据?你应该在return list; 的地方打断点看看,然后看看输出的sql对不对