-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 9 posts ] 
Author Message
 Post subject: EJB 3.0 and JTA (Distributed transactions)
PostPosted: Tue Jul 11, 2006 2:06 am 
Beginner
Beginner

Joined: Tue Jan 17, 2006 6:16 am
Posts: 31
hi, first of all sorry for my english ;)
then :)
i've JBoss Application Server : jboss-4.0.4.GA configured with EJB3...
i'm working with oracle 10g and postgresql databases.

i want write server side ejb component wich must work both of this databases and i want manage this transactions ......

i have no problem working with single database.. (with only oracle or with only postgres)

i think i need two -ds.xml file oracle-xa-ds.xml and postgres-ds.xml . both of them are configured corectly... i also put both database dtiver in jboss lib folder.

there is my ds.xml files :
oracle-xa-ds.xml
Quote:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<xa-datasource>
<jndi-name>XAOracleDS</jndi-name>
<track-connection-by-tx/>
<isSameRM-override-value>false</isSameRM-override-value> <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:oracle:thin:@192.9.200.177:1521:devnbtwo</xa-datasource-property>
<xa-datasource-property name="User">paata</xa-datasource-property>
<xa-datasource-property name="Password">1982226</xa-datasource-property>
<no-tx-separate-pools/>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</xa-datasource>
<mbean code="org.jboss.resource.adapter.jdbc.vendor.OracleXAExceptionFormatter"
name="jboss.jca:service=OracleXAExceptionFormatter">
<depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>
</mbean>
</datasources>



postgres-ds.xml
Quote:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>PostgresDS</jndi-name> <connection-url>jdbc:postgresql://localhost:5432/Test</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<user-name>postgres</user-name>
<password>1982226</password>
<metadata>
<type-mapping>PostgreSQL 7.2</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>



and i think i need two persistance.xml file in my application. am i riht ?
persistance.xml
Quote:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/ ... ce_1_0.xsd"
version="1.0">
<persistence-unit name="Oracle" transaction-type="JTA">
<jta-data-source>java:/XAOracleDS</jta-data-source>
<class>com.magti.businesslayer.ejb3entity.Group</class>
<class>com.magti.businesslayer.ejb3entity.Student</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
<property name="hibernate.connection.url" value="jdbc:oracle:thin:@192.9.200.177:1521:devnbtwo"/>
<property name="hibernate.connection.username" value="paata"/>
<property name="hibernate.connection.password" value="1982226"/>
<property name="hibernate.default_schema" value="PAATA"/>
</properties>
</persistence-unit>
</persistence>


and persistance1.xml

Quote:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/ ... ce_1_0.xsd"
version="1.0">
<persistence-unit name="PostgreSql" transaction-type="JTA">
<jta-data-source>java:/PostgresDS</jta-data-source>
<class>com.magti.businesslayer.ejb3entity.Group</class>
<class>com.magti.businesslayer.ejb3entity.Student</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/Test"/>
<property name="hibernate.connection.username" value="postgres"/>
<property name="hibernate.connection.password" value="1982226"/>
<property name="hibernate.default_schema" value="postgres"/>
</properties>
</persistence-unit>
</persistence>


and my session bean looks like
Quote:
import [...];
@Remote(StudentFasade.class)
public @Stateless
class StudentFasadeBean implements StudentFasade {

@PersistenceContext(name="Oracle")
private EntityManager oracleManager;

@PersistenceContext(name="PostgreSql")
private EntityManager postgreSqlmanager;


@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public Long addStudent(Student _student)
throws MagtiException {
try {
System.out.println("================= Adding Student =====================");
_student.setAge(stbean.getAge());
_student.setId(stbean.getId());
_student.setName(stbean.getName());
_student.setSurname(stbean.getSurname());
//add in oracle
oracleManager.persist(_student);\
//add in postgres
postgreSqlmanager.persist(_student);
System.out.println("======== Students Adding Completed Succsessfully ======");
return _student.getId();

} catch (Exception e) {
e.printStackTrace();
return 0L;
}
}
}


what is wrong here can anybody help me ..
thanks.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 11, 2006 3:33 am 
Expert
Expert

Joined: Sat Oct 25, 2003 8:49 am
Posts: 490
Location: Vrhnika, Slovenia
What do you think is wrong?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 11, 2006 4:37 am 
Beginner
Beginner

Joined: Tue Jan 17, 2006 6:16 am
Posts: 31
alesj wrote:
What do you think is wrong?

i want manage transactions with multiple database ...
i have two -ds.xml config file
they work fine separately ....
then i dont know my aplication need persistance.xml file ....
when i put two persistance unit in one xml file i get an error
Code:
23:33:03,218 WARN  [ServiceController] Problem starting service jboss.j2ee:service=EJB3,module=test8.jar
java.lang.RuntimeException: Field private javax.persistence.EntityManager com.magti.businesslayer.ejb3Fasade.StudentFasadeBean.oracleManager @PersistenceUnit in error: EMPTY STRING unitName and there is more than one scoped persistence unit
   at org.jboss.ejb3.injection.PersistenceContextHandler.loadFieldDependencies(PersistenceContextHandler.java:358)
   at org.jboss.ejb3.injection.PersistenceContextHandler.loadDependencies(PersistenceContextHandler.java:410)
   at org.jboss.ejb3.EJBContainer.processMetadata(EJBContainer.java:236)


my persistance.xml file :
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
   version="1.0">   
   <persistence-unit name="Oracle" transaction-type="JTA">
      <jta-data-source>java:/XAOracleDS</jta-data-source>
      <class>com.magti.businesslayer.ejb3entity.Group</class>
      <class>com.magti.businesslayer.ejb3entity.Student</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
         <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
         <property name="hibernate.connection.url" value="jdbc:oracle:thin:@192.9.200.177:1521:devnbtwo"/>
         <property name="hibernate.connection.username" value="paata"/>
         <property name="hibernate.connection.password" value="1982226"/>
         <property name="hibernate.default_schema" value="PAATA"/>
      </properties>
   </persistence-unit>   
   <persistence-unit name="PostgreSql" transaction-type="JTA">
      <jta-data-source>java:/PostgresDS</jta-data-source>
      <class>com.magti.businesslayer.ejb3entity.Group</class>
      <class>com.magti.businesslayer.ejb3entity.Student</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
         <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
         <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/Test"/>
         <property name="hibernate.connection.username" value="postgres"/>
         <property name="hibernate.connection.password" value="1982226"/>
         <property name="hibernate.default_schema" value="postgres"/>
      </properties>
   </persistence-unit>   
</persistence>




there are different names and not em[pty string ....
i think it mustnot be two persistance unit in one persistance xml file ....
but i don't know how i can create two persistance.xml file in my META_INF folder ...



[/code]


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 11, 2006 4:50 am 
Expert
Expert

Joined: Sat Oct 25, 2003 8:49 am
Posts: 490
Location: Vrhnika, Slovenia
@PersistenceContext(unitName="Oracle")
private EntityManager oracleManager;

@PersistenceContext(unitName="PostgreSql")
private EntityManager postgreSqlmanager;

unitName != name

And your postgresql ds should also be XA then.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 11, 2006 6:34 am 
Beginner
Beginner

Joined: Tue Jan 17, 2006 6:16 am
Posts: 31
fine ..................................
u're rigth thank u very much ...

i had not postgres xa datasource and my postgres persistance unit was also incorrect ...

correct postgres-ds.xml file :
Code:

<datasources>
    <xa-datasource>
        <jndi-name>PostgresDS</jndi-name>
        <track-connection-by-tx/>
        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
        <xa-datasource-property name="ServerName">localhost</xa-datasource-property>
        <xa-datasource-property name="PortNumber">5432</xa-datasource-property>
        <xa-datasource-property name="DatabaseName">Test</xa-datasource-property>
        <xa-datasource-property name="User">postgres</xa-datasource-property>
        <xa-datasource-property name="Password">1982226</xa-datasource-property>
    </xa-datasource>
</datasources>


and correct persistance.xml file :

Code:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
   version="1.0">   
   <persistence-unit name="Oracle">
      <jta-data-source>java:/XAOracleDS</jta-data-source>
      <class>com.magti.businesslayer.ejb3entity.Group</class>
      <class>com.magti.businesslayer.ejb3entity.Student</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
         <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
         <property name="hibernate.connection.url" value="jdbc:oracle:thin:@192.9.200.177:1521:devnbtwo"/>
         <property name="hibernate.connection.username" value="paata"/>
         <property name="hibernate.connection.password" value="1982226"/>
         <property name="hibernate.default_schema" value="PAATA"/>
      </properties>
   </persistence-unit>   
   <persistence-unit name="PostgreSql">
      <jta-data-source>java:/PostgresDS</jta-data-source>
      <class>com.magti.businesslayer.ejb3entity.Group</class>
      <class>com.magti.businesslayer.ejb3entity.Student</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
         <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
         <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/Test"/>
         <property name="hibernate.connection.username" value="postgres"/>
         <property name="hibernate.connection.password" value="1982226"/>
         <property name="hibernate.default_schema" value="public"/>
      </properties>
   </persistence-unit>   
</persistence>


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 11, 2006 9:35 am 
Beginner
Beginner

Joined: Tue Jan 17, 2006 6:16 am
Posts: 31
sorry again ...
i have another problem ....
here is my session bean wich insert both of databases :

Code:
import [...];
@Remote(StudentFasade.class)
public @Stateless
class StudentFasadeBean implements StudentFasade {

   @PersistenceContext(unitName = "Oracle")
   private EntityManager oracleManager;

   //   
   @PersistenceContext(unitName = "PostgreSql")
   private EntityManager postgreSqlmanager;

   @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
   public Long addStudent(StudentBean stbean)
         throws MagtiException {
      try {
         OraStudent _orastudent = new OraStudent();
                        _orastudent.setAge(stbean.getAge());
         _orastudent.setName(stbean.getName());
         _orastudent.setSurname(stbean.getSurname());
                         
                          oracleManager.persist(_orastudent);

         PostStudent _poststudent = new PostStudent();
         _poststudent.setAge(stbean.getAge());
         _poststudent.setId(_orastudent.getId());
         _poststudent.setName(stbean.getName());
         _poststudent.setSurname(stbean.getSurname());

         postgreSqlmanager.persist(_poststudent);
         return _orastudent.getId();

      } catch (Exception e) {
         e.printStackTrace();
         return 0L;
      }
   }
}


but i get an error like this :


Code:
04:25:19,140 ERROR [STDERR] javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.magti.businesslayer.ejb3entity.oracle.OraStudent
04:25:19,140 ERROR [STDERR]    at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:567)
04:25:19,140 ERROR [STDERR]    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:192)
04:25:19,140 ERROR [STDERR]    at org.jboss.ejb3.entity.TransactionScopedEntityManager.persist(TransactionScopedEntityManager.java:175)



i can't understand what does it mean : detached entity passed to persist


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 11, 2006 10:40 am 
Expert
Expert

Joined: Sat Oct 25, 2003 8:49 am
Posts: 490
Location: Vrhnika, Slovenia
This entity was already persisted - you need to merge it.

Read API of entity manager: http://www.hibernate.org/hib_docs/ejb3-api/javax/persistence/EntityManager.html
And this: http://docs.jboss.org/ejb3/app-server/HibernateEntityManager/reference/en/html_single/index.html#d0e860


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 12, 2006 2:27 am 
Beginner
Beginner

Joined: Tue Jan 17, 2006 6:16 am
Posts: 31
alesj ok i saw it ....
i know that persist mean insert and merge mean update .....
i have two different entity bean and i want persist them in different database ..............

they are different object and why i should use merge ????

my session bean :

Code:
@Remote(StudentFasade.class)
public @Stateless
class StudentFasadeBean implements StudentFasade {

   @PersistenceContext(unitName = "Oracle")
   private EntityManager oracleManager;

   @PersistenceContext(unitName = "PostgreSql")
   private EntityManager postgreSqlmanager;

   @TransactionAttribute(TransactionAttributeType.REQUIRED)
   public Integer addStudent(StudentBean stbean, GroupsBean grBean)
         throws MagtiException {
      try {
         System.out
               .println("================= Adding Student =====================");
         OraStudent _orastudent = new OraStudent();
         _orastudent.setAge(stbean.getAge());
         _orastudent.setName(stbean.getName());
         _orastudent.setSurname(stbean.getSurname());

         oracleManager.persist(_orastudent);
         
         PostStudent _poststudent = new PostStudent();
         _poststudent.setAge(stbean.getAge());
         _poststudent.setId(_orastudent.getId());
         _poststudent.setName(stbean.getName());
         _poststudent.setSurname(stbean.getSurname());
         postgreSqlmanager.persist(_poststudent);   
         System.out
               .println("======== Students Adding Completed Succsessfully ======");
         return 0;

      } catch (Exception e) {
         e.printStackTrace();
         return 0;
      }
   }
}


here is my new persistance.xml file :

Code:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
   version="1.0">   
   <persistence-unit name="Oracle">
      <jta-data-source>java:/XAOracleDS</jta-data-source>
      <class>com.magti.businesslayer.ejb3entity.oracle.OraGroup</class>
      <class>com.magti.businesslayer.ejb3entity.oracle.OraStudent</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
         <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
         <property name="hibernate.connection.url" value="jdbc:oracle:thin:@192.9.200.177:1521:devnbtwo"/>
         <property name="hibernate.connection.username" value="paata"/>
         <property name="hibernate.connection.password" value="1982226"/>
         <property name="hibernate.default_schema" value="PAATA"/>
      </properties>
   </persistence-unit>   
   <persistence-unit name="PostgreSql">
      <jta-data-source>java:/PostgresDS</jta-data-source>
      <class>com.magti.businesslayer.ejb3entity.postgres.PostGroup</class>
      <class>com.magti.businesslayer.ejb3entity.postgres.PostStudent</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
         <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
         <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/Test"/>
         <property name="hibernate.connection.username" value="postgres"/>
         <property name="hibernate.connection.password" value="1982226"/>
         <property name="hibernate.connection.dbname" value="Test"/>
         <property name="hibernate.default_schema" value="MyShema"/>         
      </properties>
   </persistence-unit>   
</persistence>






and i get an error again :(

Code:
21:21:04,281 INFO  [STDOUT] ================= Adding Student =====================
21:21:04,281 INFO  [STDOUT] ======== Students Adding Completed Succsessfully ======
21:21:04,296 WARN  [TxConnectionManager] Connection error occured: org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener@51c1ad[state=NORMAL mc=org.jboss.resource.adapter.jdbc.xa.XAManagedConnection@10156e2 handles=1 lastUse=1152638445234 permit=true trackByTx=true mcp=org.jboss.resource.connectionmanager.JBossManagedConnectionPool$OnePool@11a288c context=org.jboss.resource.connectionmanager.InternalManagedConnectionPool@5c25d9 xaResource=org.jboss.resource.adapter.jdbc.xa.XAManagedConnection@10156e2 txSync=null]
java.sql.BatchUpdateException: Batch entry 0 insert into STUDENT (NAME, GROUPID, SURNAME, AGE, ID) values (Paata, NULL, Lominadze, 24, 950) was aborted.  Call getNextException to see the cause.
   at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2512)
   at org.postgresql.core.v3.QueryExecutorImpl$1.handleError(QueryExecutorImpl.java:399)
   at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1310)
   at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:347)
   at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2574)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.postgresql.ds.common.PooledConnectionImpl$StatementHandler.invoke(PooledConnectionImpl.java:474)
   at $Proxy123.executeBatch(Unknown Source)
   at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:517)
   at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
   at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:993)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:340)
   at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:475)
   at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1491)
   at org.jboss.tm.TransactionImpl.beforePrepare(TransactionImpl.java:1110)
   at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:324)
   at org.jboss.tm.TxManager.commit(TxManager.java:240)
   at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
   at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
   at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:197)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:227)
   at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
   at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
   at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:828)
   at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:681)
   at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:358)
   at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:398)
   at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239)
21:21:04,312 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
21:21:04,312 ERROR [JDBCExceptionReporter] Batch entry 0 insert into STUDENT (NAME, GROUPID, SURNAME, AGE, ID) values (Paata, NULL, Lominadze, 24, 950) was aborted.  Call getNextException to see the cause.
21:21:04,312 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: 42P01
21:21:04,312 ERROR [JDBCExceptionReporter] ERROR: relation "student" does not exist
21:21:04,312 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:249)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
   at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:993)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:340)
   at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:475)
   at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1491)
   at org.jboss.tm.TransactionImpl.beforePrepare(TransactionImpl.java:1110)
   at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:324)
   at org.jboss.tm.TxManager.commit(TxManager.java:240)
   at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
   at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
   at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:197)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:227)
   at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
   at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
   at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:828)
   at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:681)
   at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:358)
   at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:398)
   at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239)
Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into STUDENT (NAME, GROUPID, SURNAME, AGE, ID) values (Paata, NULL, Lominadze, 24, 950) was aborted.  Call getNextException to see the cause.
   at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2512)
   at org.postgresql.core.v3.QueryExecutorImpl$1.handleError(QueryExecutorImpl.java:399)
   at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1310)
   at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:347)
   at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2574)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.postgresql.ds.common.PooledConnectionImpl$StatementHandler.invoke(PooledConnectionImpl.java:474)
   at $Proxy123.executeBatch(Unknown Source)
   at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:517)
   at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
   ... 33 more
21:21:04,343 WARN  [TransactionImpl] XAException: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=paata/42, BranchQual=, localId=42] errorCode=XAER_RMERR
org.postgresql.xa.PGXAException: Error rolling back prepared transaction
   at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:307)
   at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.rollback(XAManagedConnection.java:152)
   at org.jboss.tm.TransactionImpl$Resource.rollback(TransactionImpl.java:2277)
   at org.jboss.tm.TransactionImpl.rollbackResources(TransactionImpl.java:1837)
   at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:368)
   at org.jboss.tm.TxManager.commit(TxManager.java:240)
   at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
   at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
   at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:197)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
   at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
   at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:227)
   at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
   at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
   at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:828)
   at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:681)
   at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:358)
   at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:398)
   at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239)
Caused by: org.postgresql.util.PSQLException: An I/O error occured while sending to the backend.
   at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:214)
   at org.postgresql.jdbc2.AbstractJdbc2Connection.executeTransactionCommand(AbstractJdbc2Connection.java:617)
   at org.postgresql.jdbc2.AbstractJdbc2Connection.rollback(AbstractJdbc2Connection.java:654)
   at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:280)
   ... 27 more
Caused by: java.io.IOException: Stream closed
   at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:38)
   at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:151)
   at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
   at org.postgresql.core.PGStream.flush(PGStream.java:531)
   at org.postgresql.core.v3.QueryExecutorImpl.sendSync(QueryExecutorImpl.java:672)
   at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:187)
   ... 30 more



Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 12, 2006 3:21 am 
Expert
Expert

Joined: Sat Oct 25, 2003 8:49 am
Posts: 490
Location: Vrhnika, Slovenia
Ok, for the previous error - persisting detached entity - see if your id property on OraStudent is set ok.

Here check the sql query (turn on sql log in Hibernate) that is executed against postgresql - since SQLGrammarException is thrown.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 9 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.