数据库:
我想获得一个列表用户,他们拥有相同的Monhoc(它有maMH = MH1)。 我的代码:
private final SessionFactory sf = HibernateUtil.getSessionFactory();
Public List<User> listUserMonHoc() {
try {
sf.getCurrentSession().beginTransaction();
Query query = sf.getCurrentSession().createSQLQuery("select a.username, a.name from Monhoc b join b.User a where b.mamh = :id");
query.setString("id", "MH1");
List<User> list = query.list();
sf.getCurrentSession().getTransaction().commit();
return list;
} catch (Exception e) {
System.out.println("sai");
System.out.println(e.toString());
//return null;
e.printStackTrace();
return null;
}
}
错误消息:错误:表'b.user'不存在。 谢谢!
答案 0 :(得分:0)
我可以看到你的查询有问题。首先,您必须加入第三个表,然后从monhoc表中按id搜索。 第二,这里有一个问题
Query query = sf.getCurrentSession().createSQLQuery("select a.username, a.name from Monhoc b join b.User a where b.mamh = :id");
你必须将b.User更改为User,因为b是Monhoc表的别名。 因此,MySql中的本机查询看起来像这样:
SELECT u.username, u.name
FROM user AS u
INNER JOIN user_monhoc AS um
ON u.username = um.user_id
INNER JOIN monhoc AS m
ON um.mh_id = m.mamh
WHERE ....
我正在使用内部联接(根据您的需要,它可以是不同的。)