`

this.getJpaTemplate() createNativeQuery

SQL 
阅读更多
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;
}

 

分享到:
评论

相关推荐

    hibernate 执行原生sql的几种方式

    NativeQuery nativeQuery = session.createNativeQuery("from User", User.class); List&lt;User&gt; users = nativeQuery.list(); ``` 5. **通过`SessionFactory.generateSQLInsertString()`** Hibernate提供了一个...

    EJB3.0实例教程如何调用存储过程.doc

    调用存储过程的方法主要依赖于EntityManager对象的createNativeQuery()方法,该方法用于执行非JPA(Java Persistence API)的SQL语句。调用存储过程的SQL格式通常如下: ```sql {call 存储过程名称(参数 1, 参数 2,...

    让JPA的Query查询接口返回Map对象的方法

    然而,在JPA 2.0中,使用entityManager.createNativeQuery()执行原生的SQL语句时,query.getResultList()返回的是一个List[]&gt;,每行数据被作为一个对象数组返回。这使得代码不容易让人理解,且不灵活。因此,本文将...

    jap对单表的增删改查.zip

    Query sqlQuery = em.createNativeQuery("SELECT * FROM USER WHERE NAME = 'Alice'", User.class); List&lt;User&gt; users = sqlQuery.getResultList(); ``` 以上就是JPA对单表进行增删改查的基本操作和Query方法的...

    hibernate query调用oracle存储过程

    在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...

    jpa查询详解

    Query query = entityManager.createNativeQuery("select name from person where id=:id"); query.setParameter("id", 1); String name = (String) query.getSingleResult(); System.out.println(name); ``` 命名...

    EJB3JPA调用原生SQL和函数存储过程[归类].pdf

    在EJB3中调用原生SQL可以使用`EntityManager`的`createNativeQuery()`方法,如以下代码所示: ```java EntityManager em = ...; List users = em.createNativeQuery("SELECT * FROM USER").getResultList(); ...

    playframework增删改查

    SQLQuery query = c.createNativeQuery("SELECT * FROM users"); return query.list(User.simple); }); return ok(views.html.users.render(users)); } // 其他增删改查方法... } // 对于Scala用户 import ...

    Hibernate_开发指南最新版

    2. **读取(READ)**: `Session.get()`或`Session.load()`根据主键获取对象,`Session.createQuery()`或`Session.createNativeQuery()`执行查询。 3. **更新(UPDATE)**: 修改对象属性后,调用`Session.update()`或`...

    hibernate api 文档

    `Session.createQuery()`或`Session.createNativeQuery()`可以创建Query对象。HQL支持聚合函数、子查询、关联查询等复杂操作。 5. **Transaction**: Hibernate提供了`Transaction`接口来管理数据库事务。在Session...

    EJB调用存储过程源码

    NativeQuery nativeQuery = entityManager.createNativeQuery(sql); nativeQuery.setParameter(1, param1); nativeQuery.setParameter(2, param2); nativeQuery.executeUpdate(); ``` 在这个例子中,`...

    Hibernate使用——入门

    - **Read**:`Session.get()`或`Session.load()`用于根据主键获取对象,`Session.createQuery()`或`Session.createNativeQuery()`进行更复杂的查询。 - **Update**:更新对象状态后,调用`Session.update()`或`...

    Struts2分页源码技术的应用

    Query query = entityManager.createNativeQuery(sql, User.class); query.setParameter("startIndex", startIndex); query.setParameter("pageSize", pageSize); return query.getResultList(); } ``` 这里的...

    关于hibernate 的createQuery和createSqlQuery 的区别

    Hibernate 中的 createQuery 和 createSqlQuery 区别详解 在 Hibernate 中,createQuery 和 createSqlQuery 是两个常用的查询方法,但是它们之间存在着一些关键的区别。了解这两个方法的差异对于正确地使用 ...

    java-hibernate调用mysql过程和函数的方式.pdf

    在Hibernate配置文件中,你可以定义一个`sql-query`或`named-native-query`,并在代码中通过Session的createSQLQuery或createNativeQuery方法来执行。 总结来说,调用MySQL的存储过程和函数主要步骤包括: 1. 创建`...

    基于SpringBoot后端实现连接MySQL数据库并存贮数据教程

    Query query = entityManager.createNativeQuery(sql); query.setParameter(1, "testUser"); List resultList = query.getResultList(); // 处理结果... } ``` #### 四、常见SQL语句使用 1. **查询数据...

    Hibernate入门示例.doc

    2. 查询(Select):使用Session的`get()`、`load()`或`createQuery()`/`createNativeQuery()`方法获取数据。 ```java Session session = sessionFactory.openSession(); Transaction transaction = session.begin...

    Java持久层的三种查询方式

    Java JPA有三种查询方式:  1)JPQL  2)Criteria API  3)SQL  下面一一详解。 ...  一、本地SQL查询 ...  SQL是标准化的查询语言,用于管理数据。... Query query = em.createNativeQuery(g

    jpademo2.rar

    - **读取(Read)**: 使用`find()`方法根据主键查询,或使用`createQuery()`或`createNativeQuery()`执行自定义SQL。 ```java User foundUser = em.find(User.class, userId); ``` - **更新(Update)**: 修改...

Global site tag (gtag.js) - Google Analytics