程序是:
CREATE PROCEDURE `hw1_db_1`.`r2_browse_movies_by_title`(IN str_title VARCHAR(200))
BEGIN
SELECT * FROM `hw1_db_1`.`movies` WHERE title LIKE CONCAT('%', str_title, '%');
END
在Stateless
EJB中调用:
public List<Movie> searchTitles(String query) {
StoredProcedureQuery nq = em
.createStoredProcedureQuery("r2_browse_movies_by_title");
nq.registerStoredProcedureParameter("str_title", String.class,
ParameterMode.IN);
return nq.setParameter("str_title", query).getResultList(); // unchecked cast
}
不幸的是,它不会返回List<Movie>
,而是返回带有电影属性的List<Object[]>
。有办法退回List<Movie>
吗?任何编程方式转换?
答案 0 :(得分:0)
我假设
EntityManager.createStoredProcedureQuery(String procedureName, Class... resultClasses)
Create an instance of StoredProcedureQuery for executing a stored procedure in the database.
尝试将resultClasses传递给实体。
必须按照的顺序指定resultClass参数 结果集将由存储过程调用返回。
参数: procedureName - 数据库中存储过程的名称 resultClasses - 要映射存储过程生成的结果集的类