Hibernate多表查询重新封装实体

6 篇文章 0 订阅
3 篇文章 0 订阅

Hibernate查询多个表里的字段时,会返回Object类型的数据。
以mysql为例,以下为实现方法

public List<Topic> selectTopicById(int id) {
		// TODO Auto-generated method stub
		String hql="select t.tid,t.tuid,t.tsid,t.ttop,t.tdesc,t.ttime,t.tbg,u.uname,u.usex,u.udesc,u.uhead " +
				"from Topic t,User u where t.tuid=u.uid and t.tid="+id;
		List<Topic> list=new ArrayList<Topic>();
		Topic t=new Topic();
		List<Object[]> list1=this.getHibernateTemplate().find(hql);
		for (Object o[] : list1) {
			t.setTid((Integer)o[0]);
			t.setTuid((Integer)o[1]);
			t.setTsid((Integer)o[2]);
			t.setTtop((String)o[3]);	
			t.setTdesc((String)o[4]);
			t.setTtime((Date)o[5]);
			t.setTbg((String)o[6]);
			t.setUname((String)o[7]);
			t.setUsex((String)o[8]);
			t.setUdesc((String)o[9]);
			t.setUhead((String)o[10]);
        }
		list.add(t);
		return list;
	}

感觉多有繁琐,因为我用的是getHibernateTemplate().find(hql);
下面这个感觉也可以,方法不同,先做个笔记咯。

private EntityManager em;
 
 	public void testJpaNativeQuery() {
		String sql = "select t.class_no  classNo ,t.student_no studentNo ,t.remark remark  from t_student t where t.class_no like '%'||:class_no||'%' ";
		// 执行查询 并把结果专为实体类
		Query query = em.createNativeQuery(sql, Student.class);
		// 获取查询结果
		List<Student> students = query.getResultList();
	}

附上我美美的鬼刀~
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悢七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值