【问题标题】:Is there a way to return a list of objects from a MySQL stored procedure to JPA?有没有办法将 MySQL 存储过程中的对象列表返回到 JPA?
【发布时间】:2014-02-20 18:53:49
【问题描述】:

程序是:

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&lt;Movie&gt;,而是返回带有电影属性的List&lt;Object[]&gt;。有什么方法可以返回 List&lt;Movie&gt; 吗?任何程序化的转换方式?

【问题讨论】:

    标签: mysql jpa jpa-2.0


    【解决方案1】:

    我认为

        EntityManager.createStoredProcedureQuery(String procedureName, Class... resultClasses)
    Create an instance of StoredProcedureQuery for executing a stored procedure in the database.
    

    只需尝试将 resultClasses 传递给您的实体。

    resultClass 参数必须按照 结果集将由存储过程调用返回。

    参数: procedureName - 数据库中存储过程的名称 resultClasses - 存储过程生成的结果集要映射到的类

    【讨论】:

    • 是的,做到了 - 我希望参数化 getResultList() 但不接受任何参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多