如你梦想和现实只是一步之遥,那么我觉得这一步就应该是执着和笨蛋式的坚持了吧。

Hibernate SQL查询-处理关联

后端开发 独孤九剑 319℃ 0评论

映射配置参考:[Hibernate恶补教程]-6-3-6Hibernate映射篇 PO.hbm.xml 关联映射 双向1-N关联

@Test
	public void joinQuery(){
		SessionFactory sf = HibernateUtil.getSessionFactory();
		Session s = sf.getCurrentSession();
		Transaction t = s.beginTransaction();
		
		String sql="select p.*,h.* from person p,house h"
				+ " where p.id = h.person_id";
		List l = s.createSQLQuery(sql)
				.addEntity("p",Person.class)
				.addJoin("h", "p.houses").list();
		t.commit();
		System.out.println(l.size());
		for(Iterator it = l.iterator();it.hasNext();)
		{
			Object[] os = (Object[])it.next();
			System.out.println(os.length);
			Person p = (Person)os[0];
			House h = (House)os[1];
			
			System.out.println("Person name attr:"+p.getName()
			+"House name attr:" + h.getName1());
		}
	}

这种就是Hibernate SQL版的关联查询例子,更复杂的没有,别问为什么。
今天咋做查询的时候,出现了一个很奇怪的问题,就是映射的value不知道为什么会一模一样。
最开始Person和House类的属性一直。
出现的结果就是:Person和House实体的getName出来的值都是一样,后来修改了name属性变成不一样了就可以。

但是,没玩没了了,然后id因为ID还是命名成一样的。导致了,House无论怎么打印都是只有第一个。(我的House有3条数据关联了一个Person对象)。what the fuck。后面,无奈之下,再次修改id命名和Person的不一样。最后
查询出来的结果才算是正常了。

PS: 服务器页面生成花费时间 0.15秒 查询 41 次

转载请注明:KEEP3YUE » Hibernate SQL查询-处理关联

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址