Avatar billede askari Nybegynder
21. maj 2005 - 04:28 Der er 7 kommentarer

JBoss og MySQL - TransactionRolledbackException: Unable to commit

Jeg får ikke lagret i databasen.
Hva gjør jeg feil?

11:53:46,122 INFO  [STDOUT] ProductEJB: --> ejbCreate()
11:53:46,132 INFO  [STDOUT] ProductEJB: --> ejbPostCreate()
11:53:46,132 INFO  [STDOUT] CategoryEJB -->ejbLoad
11:53:46,132 INFO  [STDOUT] ProductEJB -->ejbStore
11:53:46,132 INFO  [STDOUT] CategoryEJB -->ejbStore
11:53:46,143 ERROR [LogInterceptor] TransactionRolledbackException in method: public abstract void webshop.interfaces.AdminFacade.addProduct(webshop.vo.ProductVO) throws javax.ejb.CreateException,javax.ejb.FinderException,java.rmi.RemoteException, causedBy:
org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=laptop/174, BranchQual=, localId=174] status=STATUS_NO_TRANSACTION; - nested throwable: (javax.ejb.EJBException: Update failed. Expected one affected row: rowsAffected=0, id=)
    at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:344)
    at org.jboss.ejb.plugins.TxInterceptorCMT.endTransaction(TxInterceptorCMT.java:454)
    at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:322)
    at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:146)
    at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:122)
    at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
    at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
    at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)
    at org.jboss.ejb.Container.invoke(Container.java:870)
    at sun.reflect.GeneratedMethodAccessor194.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:144)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
    at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:805)
    at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:406)
    at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
    at sun.rmi.transport.Transport$1.run(Transport.java:148)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
    at java.lang.Thread.run(Thread.java:534)
Caused by: javax.ejb.EJBException: Update failed. Expected one affected row: rowsAffected=0, id=
    at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.execute(JDBCStoreEntityCommand.java:155)
    at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.storeEntity(JDBCStoreManager.java:651)
    at org.jboss.ejb.plugins.CMPPersistenceManager.storeEntity(CMPPersistenceManager.java:413)
    at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.storeEntity(CachedConnectionInterceptor.java:390)
    at org.jboss.ejb.EntityContainer.storeEntity(EntityContainer.java:743)
    at org.jboss.ejb.GlobalTxEntityMap$2.synchronize(GlobalTxEntityMap.java:134)
    at org.jboss.ejb.GlobalTxEntityMap$GlobalTxSynchronization.synchronize(GlobalTxEntityMap.java:253)
    at org.jboss.ejb.GlobalTxEntityMap$GlobalTxSynchronization.beforeCompletion(GlobalTxEntityMap.java:302)
    at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1383)
    at org.jboss.tm.TransactionImpl.beforePrepare(TransactionImpl.java:1075)
    at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:296)
    ... 28 more
Avatar billede arne_v Ekspert
21. maj 2005 - 09:38 #1
Du bruger forhåbentligt InnoDB tabeller ?
Avatar billede askari Nybegynder
26. maj 2005 - 13:36 #2
Jeg kunne ikke lagre fordi jeg hadde AUTO_INCREMENT i primærnøkkel feltet.
Prøvde å sende med ulike verdier for å "vekke" AUTO_INCREMENT funksjonen, som foreksempel å sette id=  new Integer(0), eller null men jeg fikk fremdeles feilen.
Valgte å kjøre en spørring MAX(id)+1.

Arne, jeg skylder deg 200 points fra tidligere da jeg ikke visste hvordan dette forumet fungerte. Legg inn et svar her så får du disse points! Takk.
Avatar billede arne_v Ekspert
26. maj 2005 - 13:56 #3
Avatar billede arne_v Ekspert
26. maj 2005 - 13:56 #4
svar
Avatar billede arne_v Ekspert
26. maj 2005 - 13:57 #5
MAX(id)+1

er normalt meget problematisk i flerbruger sammenhæng

kan du ikke fjerne auto_increment fra feltet ?
Avatar billede arne_v Ekspert
26. maj 2005 - 14:00 #6
auto_increment og entity beans virker ikke særligt godt sammen

(jeg tror at der er forbedringer på vej i EJB 3.0)
Avatar billede arne_v Ekspert
24. juli 2005 - 17:05 #7
så mangler du bare at accepter svaret
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester