2009-08-17 8 views
0

MySQL을 사용하는 Sun의 GlassFish Enterprise Server에서 Spring과 Hibernate의 JPA 구현을 실행 중입니다. XAResource 예외의 Query.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(); 

Query q = entityManager.createQuery("DELETE FROM SomeEntity e"); 
q.executeUpdate(); 

나는 오류

어떤 이유로 JDBC 드라이버가 executeUpdate()에 대한 연결을 얻을 수 없지만 0123에 대해 작동합니다.. 응용 프로그램의 MySQL 계정에는 INSERT 및 DELETE를 포함한 모든 권한이 있습니다.

+0

MYSQL 버전과 함께 제공되는 드라이버를 사용해 보셨습니까? –

답변

0

jta-datasource를 사용하고 있다고 가정합니다. 그리고 저는 생각하기에, 당신은 어떤 거래도 시작하지 않았습니다. 또는 아마도 데이터 소스에 몇 가지 문제점이있을 수 있습니다. 따라서 데이터 소스를 테스트해야합니다 (jta-data-source와 non-jta-data-source를 모두 정의 할 수 있습니다). 그리고 모든 업데이트가 트랜잭션 컨텍스트에서 수행되도록하는 것이 필요합니다.

0

일반적으로 XAResource는 분산 트랜잭션 내부에 있음을 의미합니다. 이 경우 DB 데이터 소스 및 연결 (예 : com.mysql.jdbc.jdbc2.optional.MysqlXADataSource)에 XA 드라이버를 사용해야합니다.

관련 문제