解决方案 »
- 求大能们帮忙看看万分感激
- 我急需解决的
- JAVA 如何使用类的方法
- [300分]用spring:bind如何提交被选中的checkbox项,提交到controller后如何来区,能否给个例子!!!!!
- java 的 cas 服务器 在java客户端 中登录 后 在 net 客户端 中能 获取到 登录的用户名么 ,, 如果 能 如何 获取 ?》
- 有关在JTable的其中一列里的每一行中加入一个JTextField和一个JButton的问题
- 请问Hibernate如何连SQL Server?
- 如何在strut框架下用jspsmartupload上传文件?
- 怎么查看jar包里面的.class文件源java代码?
- ssh框架是如何处理的事务死锁
- 关于字符串,数组的问题
- hibernate 设置复合主键后查询问题
Query q = s.createQuery("from Student");//获得主对象
List<Student> list = q.list();
for(Student stu:list){//编列主对象
System.out.println(stu.getCard().getCardNo()); //查询子对象
}
明显就是3条sql嘛?这有什么问题呢?
如果反过来通过Card查Student的属性才会出现N+1的情况。
改成这样:
Query q = s.createQuery("from Student");
List<Student> list = q.list();
改为
List<Student> list = session.createCriteria(Student.class).setFetchMode("card", FetchMode.JOIN).list();
<one-to-one name="card" fetch="join"/>
Hibernate: select student0_.id as id1_, student0_.name as name1_ from svse.dbo.student student0_
以下是因为你list中有2条记录,显示
Hibernate: select card0_.id as id0_0_, card0_.cardNo as cardNo0_0_ from svse.dbo.card card0_ where card0_.id=?
Hibernate: select card0_.id as id0_0_, card0_.cardNo as cardNo0_0_ from svse.dbo.card card0_ where card0_.id=?