我正在使用MySQL的上运行Spring和Hibernate的GlassFish实现。
当我尝试从数据库中删除内容时:
Query q = entityManager.createQuery("DELETE FROM SomeEntity e");
q.executeUpdate();我得到了错误:
Caused by: java.sql.SQLException: Error in allocating a connection. Cause: java.lang.RuntimeException: Got exception during XAResource.start:
at com.sun.gjc.spi.base.DataSource.getConnection(DataSource.java:115)
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
at org.hibernate.jdbc.AbstractBatcher.openConnection(AbstractBatcher.java:550) 但是,调用getResultList()的所有其他查询都有效:
Query q = entityManager.createQuery("SELECT e FROM SomeEntity e");
q.getResultList();由于某些原因,JDBC驱动程序无法连接到executeUpdate(),但它可以连接到getResultList()。应用程序的MySQL帐户拥有所有权限,包括插入和删除。
发布于 2009-08-24 20:45:10
我假设您正在使用jta-datasource。我认为,您还没有启动任何事务。或者你可能在你的数据源上有一些问题。因此,您应该测试您的数据源(您可以同时定义jta-data-source和非jta-data-source)。并且您需要确保所有更新都是在事务上下文中完成的。
发布于 2009-10-16 06:34:37
一般而言,XAResource意味着您处于分布式事务中。在这种情况下,对于DB数据源和连接,必须使用XA驱动程序(例如com.mysql.jdbc.jdbc2.optional.MysqlXADataSource)
https://stackoverflow.com/questions/1290925
复制相似问题