【发布时间】:2015-09-18 18:24:24
【问题描述】:
我正在使用 jpa 和 hibernate 使用 mySql 和 jee 应用程序
我有一个存储过程,它从 db1 中的表中删除数据,然后从 db2 中的表中选择数据并将它们插入到 db1 中的表中
CREATE PROCEDURE `update_data`(myId int(11))
BEGIN
DELETE FROM db1.tbl1
WHERE db1.tbl1.id = myId;
INSERT INTO
db1.tbl1
SELECT * FROM
db2.tbl1
WHERE db2.tbl1.id = myId;
END
在sql中调用时成功 从 jpa 调用时返回异常
ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-17) ResultSet is from UPDATE. No Data.
ERROR [stderr] (default task-17) org.hibernate.exception.GenericJDBCException: could not execute query
JAVA代码:
@PersistenceContext(name = "db2", unitName = "db2")
EntityManager em;
org.hibernate.Session session = (org.hibernate.Session) em.getDelegate();
Transaction tx = null;
tx = session.beginTransaction();
try {
Query query = session
.createSQLQuery("CALL update_teachers(:sesId)")
.addEntity(Teacher.class).setParameter("sesId", sesId);
query.list();
session.flush();
session.clear();
tx.commit();
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
问题似乎是从 2 个不同的数据库中选择 em 无法处理此操作 我该如何执行此任务
注意:我也试过native named query 我试过@NamedStoredProcedureQuery 都给出了相同的例外
【问题讨论】:
-
调用过程时 od
sesId参数的值是多少?您使用的是什么 MySQL 版本?如果您使用受影响的版本,我发现了两个可能与此相关的 MySQL 错误:bugs.mysql.com/bug.php?id=15500 和 bugs.mysql.com/bug.php?id=25009
标签: java mysql sql hibernate jpa