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;
}
分享到:
相关推荐
NativeQuery nativeQuery = session.createNativeQuery("from User", User.class); List<User> users = nativeQuery.list(); ``` 5. **通过`SessionFactory.generateSQLInsertString()`** Hibernate提供了一个...
调用存储过程的方法主要依赖于EntityManager对象的createNativeQuery()方法,该方法用于执行非JPA(Java Persistence API)的SQL语句。调用存储过程的SQL格式通常如下: ```sql {call 存储过程名称(参数 1, 参数 2,...
然而,在JPA 2.0中,使用entityManager.createNativeQuery()执行原生的SQL语句时,query.getResultList()返回的是一个List[]>,每行数据被作为一个对象数组返回。这使得代码不容易让人理解,且不灵活。因此,本文将...
Query sqlQuery = em.createNativeQuery("SELECT * FROM USER WHERE NAME = 'Alice'", User.class); List<User> users = sqlQuery.getResultList(); ``` 以上就是JPA对单表进行增删改查的基本操作和Query方法的...
在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...
Query query = entityManager.createNativeQuery("select name from person where id=:id"); query.setParameter("id", 1); String name = (String) query.getSingleResult(); System.out.println(name); ``` 命名...
在EJB3中调用原生SQL可以使用`EntityManager`的`createNativeQuery()`方法,如以下代码所示: ```java EntityManager em = ...; List users = em.createNativeQuery("SELECT * FROM USER").getResultList(); ...
SQLQuery query = c.createNativeQuery("SELECT * FROM users"); return query.list(User.simple); }); return ok(views.html.users.render(users)); } // 其他增删改查方法... } // 对于Scala用户 import ...
2. **读取(READ)**: `Session.get()`或`Session.load()`根据主键获取对象,`Session.createQuery()`或`Session.createNativeQuery()`执行查询。 3. **更新(UPDATE)**: 修改对象属性后,调用`Session.update()`或`...
`Session.createQuery()`或`Session.createNativeQuery()`可以创建Query对象。HQL支持聚合函数、子查询、关联查询等复杂操作。 5. **Transaction**: Hibernate提供了`Transaction`接口来管理数据库事务。在Session...
NativeQuery nativeQuery = entityManager.createNativeQuery(sql); nativeQuery.setParameter(1, param1); nativeQuery.setParameter(2, param2); nativeQuery.executeUpdate(); ``` 在这个例子中,`...
- **Read**:`Session.get()`或`Session.load()`用于根据主键获取对象,`Session.createQuery()`或`Session.createNativeQuery()`进行更复杂的查询。 - **Update**:更新对象状态后,调用`Session.update()`或`...
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配置文件中,你可以定义一个`sql-query`或`named-native-query`,并在代码中通过Session的createSQLQuery或createNativeQuery方法来执行。 总结来说,调用MySQL的存储过程和函数主要步骤包括: 1. 创建`...
Query query = entityManager.createNativeQuery(sql); query.setParameter(1, "testUser"); List resultList = query.getResultList(); // 处理结果... } ``` #### 四、常见SQL语句使用 1. **查询数据...
2. 查询(Select):使用Session的`get()`、`load()`或`createQuery()`/`createNativeQuery()`方法获取数据。 ```java Session session = sessionFactory.openSession(); Transaction transaction = session.begin...
Java JPA有三种查询方式: 1)JPQL 2)Criteria API 3)SQL 下面一一详解。 ... 一、本地SQL查询 ... SQL是标准化的查询语言,用于管理数据。... Query query = em.createNativeQuery(g
- **读取(Read)**: 使用`find()`方法根据主键查询,或使用`createQuery()`或`createNativeQuery()`执行自定义SQL。 ```java User foundUser = em.find(User.class, userId); ``` - **更新(Update)**: 修改...