from tb_VipUser v where v.tb_User.id=v.id and v.tb_User.name=?
Query query1=session.createQuery("from VipUser v where v.id=(select id from User where name = ?)"); query1.setString(0,name); List VipUserList1=query1.list(); for (Iterator iterator = VipUserList1.iterator(); iterator.hasNext();) { VipUser vuer1 = (VipUser) iterator.next(); System.out.println(Vuer1.getName()); } 直接这样不行吗?
所以你的 tb_vipUser应该对应的实体类中应该有个属性User userOwner (我随便取的)所以你的hql = "from VipUser vu wehre vu.userOwner.name=?";
更多hibernate的查询参看:
http://blog.csdn.net/caoyinghui1986/archive/2008/06/15/2549386.aspx
Query query1=session.createQuery("from VipUser v where v.id=(select id from User where name = ?)");
query1.setString(0,name);
List VipUserList1=query1.list();
for (Iterator iterator = VipUserList1.iterator(); iterator.hasNext();) {
VipUser vuer1 = (VipUser) iterator.next();
System.out.println(Vuer1.getName());
}
直接这样不行吗?
然后在<many-to-one> 里面加个 lazy="false" hql = "from VipUser vu wehre vu.userOwner.name=?"; 这么写就行
他会自动去找你的子表 配置文件对应字段写好就行,你的配置文件如果的自动生成
应该是关联了一个从表的对象,一直get取就行