hibernate的hql查询语句问题
两个对象
public class Manager {
private Integer id; //管理员ID号
private String name; //管理员名称
private String pwd; //管理员密码
private Purview purview;
省略set和get方法
}
public class Purview {
private Integer id;
private int sysset=0; //系统设置权限
private int readerset=0; //读者管理权限
private int bookset=0; //图书管理权限
private int borrowback=0; //图书借还权限
private int sysquery=0; //系统查询权限
private Manager manager;
省略set和get方法
}
方法query_p
public Manager query_p(String str) {
String hql = "select m.*,p.sysset,p.readerset,p.bookset,p.borrowback,p.sysquery from Manager m
left join Purview p on m.id=p.id where m.name='"+str+"'";
Manager manager1 = (Manager)this.
getHibernateTemplate().find(hql).get(0);
return manager1;
}
我写这个方法返回Manager类型,但是不对
问:应该怎么写,才能实现联合查询返回Manager,Manager类里的purview也要有值。
------解决方案--------------------
换个写法嘛
public Manager query_p(String str) {
String hql="from Manager where name="+str;
Manager manager = (Manager)this.getHibernateTemplate().find(hql).get(0);
manager1.getPurview();
return manager;
}
红色的地方我没有判断,应该判断是不是为空和size是不是>0
------解决方案--------------------
Manager要和Purview做映射关联。
也就是Manager的po里面要有Purview的属性。看是一对一还是一对多或是多对多,反正要有Purview。
Manager的映射文件里也要有Purview关联。
然后在hql时直接这样写:
from Manager m join fetch m.purview p where m.name='"+str+"'";
这里的m.purview说是你Manager里的属性purview 或是purviews