this.getJpaTemplate() createNativeQuery

1. 下面那个类的返回类型要注意它返回的结果是List<Vector> 。
import javax.persistence.EntityManager;
import javax.persistence.Query;
public class RatingRepositoryImpl extends JpaDaoSupport implements IRatingRepository {
	
	private double d;
	private EntityManager em;
	private Query query;	
		
	public double getAvgRating(Short type,long obj2){
		String sql = "select sum(r.degree)/count(*) from related r where r.type=?1 and r.obj2=?2";
		em = this.getJpaTemplate().getEntityManagerFactory().createEntityManager();
		query = em.createNativeQuery(sql);
		query.setParameter(1, type);
		query.setParameter(2, obj2);
		List<Vector> vlist = query.getResultList();
		if(vlist.size() > 0){
			Vector obj = vlist.get(0);
			d = Double.parseDouble((String)obj.get(0).toString());
		}
		return d;
	}

}

 2.还有下面是专门为了createNativeQuery()而做的解析返回结果的例子代码,以后可以借鉴。

public List<Movie> getMoviesFromVector(List<Vector> vList) {
		List<Movie> movies = new ArrayList<Movie>();
		for (Vector v : vList) {
			Movie movie = new Movie();
			Object aId = v.get(0);
			Object aTitle = v.get(1);
			Object aCover = v.get(2);
			Object aLength = v.get(3);
			Object aCreated = v.get(4);
			movie.setId(aId != null ? Long.parseLong((String) aId.toString())
					: 0);
			movie.setTitle(aTitle != null ? aTitle.toString() : "");
			movie.setCover(aCover != null ? aCover.toString() : "");
			movie.setLength(aLength != null ? Long.parseLong((String) aLength
					.toString()) : 0);
			movie.setCreated(aCreated != null ? (Timestamp)aCreated : null);
			movies.add(movie);
		}
		return movies;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值