hibernate如何顺带查询出关联表的内容呢
比如我的类是这样的publicclassStudent{privateGradeg;getter/setter;}我已经做好了一对多多对一配置以及延迟加载都配置好了之后怎...
比如我的类是这样的
public class Student{
private Grade g;
getter/setter;
}我已经做好了一对多多对一配置 以及延迟加载都配置好了 之后怎么办 我如何查询出g中的信息(比如g.gradename,g.gradedescribe...) 展开
public class Student{
private Grade g;
getter/setter;
}我已经做好了一对多多对一配置 以及延迟加载都配置好了 之后怎么办 我如何查询出g中的信息(比如g.gradename,g.gradedescribe...) 展开
3个回答
推荐于2018-03-22
展开全部
在实体类添加完后,在类的映射文件中同样添加。
<!-- 实训班级对象 -->
<many-to-one name="traClass" column="classId"
class="com.dh.stu.traclass.pojos.TraClass" insert="false" update="false">
</many-to-one>
在这里,添加多对一关系,配置文件所在类为“多”,即学生表;实训班级表为“一”。这里注意,many-to-one中,name对应实训学生表中的属性,即班级对象。column对应实训学生表的列名。class对应“一”所在类的路径名。
这样,关联关系就配好了,下面就是在页面中获得属性值。
列表页面中,${item.traClass.className }。即可显示出两表的数据。
其次,考虑到多表查询,使用拼装hql语句分页,并返回list。
public String list() {
// 从请求参数中获取pageNumber
String[] str = ActionContextUtils.getParameters(Globals.PAGE_NUMBER);
int pageNo = NumberUtils.toInt(str[0], 1);
StringBuffer hql = new StringBuffer();
hql.append(" from TrainStudent t where 1=1 ");
List<Object> params = new ArrayList<Object>(0);
if (!StringUtils.isEmpty(this.grade)) {
hql.append(" and t.traClass.grade like ?");
params.add("%" + this.grade + "%");
}
if (!StringUtils.isEmpty(this.className1)) {
hql.append(" and t.traClass.className like ?");
params.add("%" + this.className1 + "%");
}
if (!StringUtils.isEmpty(this.studentName)) {
hql.append(" and t.studentName like ?");
params.add("%" + this.studentName + "%");
}
if (!StringUtils.isEmpty(this.studentNo)) {
hql.append(" and t.studentNo like ?");
params.add("%" + this.studentNo + "%");
}
Pagination<TrainStudent> pagination = this.trainStuService.findByPage(
pageNo, this.getPageSize(), hql.toString(), params.toArray());
// 把pagination对象保存到request范围中
ActionContextUtils.setAtrributeToRequest("pagination", pagination);
return "list";
}
这样,就可以实现多表显示及查询了。
<!-- 实训班级对象 -->
<many-to-one name="traClass" column="classId"
class="com.dh.stu.traclass.pojos.TraClass" insert="false" update="false">
</many-to-one>
在这里,添加多对一关系,配置文件所在类为“多”,即学生表;实训班级表为“一”。这里注意,many-to-one中,name对应实训学生表中的属性,即班级对象。column对应实训学生表的列名。class对应“一”所在类的路径名。
这样,关联关系就配好了,下面就是在页面中获得属性值。
列表页面中,${item.traClass.className }。即可显示出两表的数据。
其次,考虑到多表查询,使用拼装hql语句分页,并返回list。
public String list() {
// 从请求参数中获取pageNumber
String[] str = ActionContextUtils.getParameters(Globals.PAGE_NUMBER);
int pageNo = NumberUtils.toInt(str[0], 1);
StringBuffer hql = new StringBuffer();
hql.append(" from TrainStudent t where 1=1 ");
List<Object> params = new ArrayList<Object>(0);
if (!StringUtils.isEmpty(this.grade)) {
hql.append(" and t.traClass.grade like ?");
params.add("%" + this.grade + "%");
}
if (!StringUtils.isEmpty(this.className1)) {
hql.append(" and t.traClass.className like ?");
params.add("%" + this.className1 + "%");
}
if (!StringUtils.isEmpty(this.studentName)) {
hql.append(" and t.studentName like ?");
params.add("%" + this.studentName + "%");
}
if (!StringUtils.isEmpty(this.studentNo)) {
hql.append(" and t.studentNo like ?");
params.add("%" + this.studentNo + "%");
}
Pagination<TrainStudent> pagination = this.trainStuService.findByPage(
pageNo, this.getPageSize(), hql.toString(), params.toArray());
// 把pagination对象保存到request范围中
ActionContextUtils.setAtrributeToRequest("pagination", pagination);
return "list";
}
这样,就可以实现多表显示及查询了。
展开全部
根据你所说的你可以这样做:
List list=dao.all("from Student");//查询数据库
for(int i=0;i<list.size();i++){
Student st=(Student)list.get(i);
Grade g=st.getG();
System.out.println(g.getGradeName());
}
你试试!
List list=dao.all("from Student");//查询数据库
for(int i=0;i<list.size();i++){
Student st=(Student)list.get(i);
Grade g=st.getG();
System.out.println(g.getGradeName());
}
你试试!
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用HQL中的连接查询,内连接的方法,很容易就实现了
追问
能写具体点么 谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询