Hello, Thanks very much to Joe and Asluk for info on my last post. My problem was with not having InnoDB enabled in MySQL. Since then I have been busy building stuff and learning how this all works. I am now at a point where I have the same problem as Kasper in his post with the same subject as this post. I thought I'd try out something similar with the airline example and I got the same problem there.
I got the latest version out of CVS a few hours ago and re-tested. The JBoss server is 3.0.2 and the airline-ejb.jar file deploys with no problems. However, when I run the following code: // Start code snippet FlightLocalHome ejbFlightLH = FlightUtil.getLocalHome(); FlightLocal ejbFlight = ejbFlightLH.create("String1", new Timestamp(new GregorianCalendar().getTimeInMillis()), new Timestamp(new GregorianCalendar().getTimeInMillis())); myLogger.info("This Works"); PersonLocalHome ejbPersonLH = PersonUtil.getLocalHome(); PersonLocal ejbPerson = ejbPersonLH.create("Adrian", "Hallam"); myLogger.info("This Works"); ReservationLocalHome ejbReservationLH = ReservationUtil.getLocalHome(); ReservationLocal ejbReservation = ejbReservationLH.create( new Timestamp(new GregorianCalendar().getTimeInMillis()), ejbPerson, ejbFlight); myLogger.info("This doesn't work"); // End code snippet The above code causes the following error message in the JBoss log: Executing SQL: INSERT INTO reservations (reservation_id, person_id_fk, flight_id_fk, registration_utc, comment, person_id_fk, flight_id_fk) VALUES (?, ?, ?, ?, ?, ?, ?) ... java.sql.SQLException: General error: Column 'flight_id_fk' specified twice The problem obviously being the two instances of person_id_fk in the INSERT statement. Kasper got this problem with a Sapdb datasource and I am getting it with MySql so it is probably not a data source issue. It may be a JBoss bug though? Is the code above that I used to populate the objects close enough to correct? Has anyone else got this working with some differences (such as different JBoss version or different database)? I have attached more info from the Jboss logs. If it doesn't come through or it would help to have a copy of the .war used to test this then let me know and I'll send it. cheers, Adrian http://mobile.yahoo.com.au - Yahoo! Messenger for SMS - Always be connected to your Messenger Friends
2002-10-05 03:52:12,327 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Flight] Create: pk=8 2002-10-05 03:52:12,327 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Flight] Executing SQL: SELECT COUNT(*) FROM flights WHERE flight_id=? 2002-10-05 03:52:12,338 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Flight] Executing SQL: INSERT INTO flights (flight_id, name, departure_utc, arrival_utc) VALUES (?, ?, ?, ?) 2002-10-05 03:52:12,338 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Flight] Rows affected = 1 2002-10-05 03:52:12,378 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Person] Create: pk=6 2002-10-05 03:52:12,378 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Person] Executing SQL: SELECT COUNT(*) FROM persons WHERE person_id=? 2002-10-05 03:52:12,378 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Person] Executing SQL: INSERT INTO persons (person_id, first_name, last_name) VALUES (?, ?, ?) 2002-10-05 03:52:12,388 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Person] Rows affected = 1 2002-10-05 03:52:12,408 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCFindByPrimaryKeyQuery.Sequence.findByPrimaryKey] Executing SQL: SELECT name FROM SEQ_BLOCK WHERE name=? 2002-10-05 03:52:12,408 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Sequence] Create: pk=reservations.reservation_id 2002-10-05 03:52:12,408 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Sequence] Executing SQL: SELECT COUNT(*) FROM SEQ_BLOCK WHERE name=? 2002-10-05 03:52:12,408 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Sequence] Executing SQL: INSERT INTO SEQ_BLOCK (name, idx) VALUES (?, ?) 2002-10-05 03:52:12,408 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Sequence] Rows affected = 1 2002-10-05 03:52:12,418 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Reservation] Create: pk=[.5.null.null.] 2002-10-05 03:52:12,418 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Reservation] Executing SQL: SELECT COUNT(*) FROM reservations WHERE reservation_id=? AND person_id_fk=? AND flight_id_fk=? 2002-10-05 03:52:12,458 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Reservation] Executing SQL: INSERT INTO reservations (reservation_id, person_id_fk, flight_id_fk, registration_utc, comment, person_id_fk, flight_id_fk) VALUES (?, ?, ?, ?, ?, ?, ?) 2002-10-05 03:52:12,458 ERROR [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Reservation] Could not create entity java.sql.SQLException: General error: Column 'flight_id_fk' specified twice at org.gjt.mm.mysql.MysqlIO.sendCommand(Unknown Source) at org.gjt.mm.mysql.MysqlIO.sqlQueryDirect(Unknown Source) at org.gjt.mm.mysql.Connection.execSQL(Unknown Source) at org.gjt.mm.mysql.PreparedStatement.executeUpdate(Unknown Source) at org.gjt.mm.mysql.PreparedStatement.executeUpdate(Unknown Source) at org.jboss.resource.adapter.jdbc.local.LocalPreparedStatement.executeUpdate(LocalPreparedStatement.java:308) at org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.insertEntity(JDBCCreateEntityCommand.java:196) at org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.execute(JDBCCreateEntityCommand.java:131) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreManager.java:527) at org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:253) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.createEntity(CachedConnectionInterceptor.java:270) at org.jboss.ejb.EntityContainer.createLocalHome(EntityContainer.java:579) at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:1116) at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:73) at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:209) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:215) at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:88) at org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:79) at org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:44) at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:111) at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:178) at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:52) at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:105) at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:129) at org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:487) at org.jboss.ejb.plugins.local.BaseLocalContainerInvoker.invokeHome(BaseLocalContainerInvoker.java:230) at org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110) at $Proxy410.create(Unknown Source) at org.bugsample.struts.BugSampleAction.execute(Unknown Source) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:344) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:313) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:554) at org.mortbay.jetty.servlet.WebApplicationHandler.handle(WebApplicationHandler.java:199) at org.mortbay.http.HttpContext.handle(HttpContext.java:1572) at org.mortbay.http.HttpContext.handle(HttpContext.java:1522) at org.mortbay.http.HttpServer.service(HttpServer.java:795) at org.jboss.jetty.Jetty.service(Jetty.java:531) at org.mortbay.http.HttpConnection.service(HttpConnection.java:784) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:941) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:799) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:186) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:322) at org.mortbay.util.ThreadPool$JobRunner.run(ThreadPool.java:716) at java.lang.Thread.run(Thread.java:536) 2002-10-05 03:52:12,578 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.Sequence] Executing SQL: UPDATE SEQ_BLOCK SET idx=? WHERE name=? 2002-10-05 03:52:12,578 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.Sequence] Rows affected = 1 2002-10-05 03:52:12,578 INFO [BugSample] javax.ejb.CreateException: Could not create entity:java.sql.SQLException: General error: Column 'flight_id_fk' specified twice 2002-10-05 03:52:13,860 INFO [org.apache.struts.util.PropertyMessageResources] Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true 2002-10-05 03:52:13,870 INFO [org.apache.struts.util.PropertyMessageResources] Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true 2002-10-05 03:52:13,870 INFO [org.apache.struts.util.PropertyMessageResources] Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true 2002-10-05 03:52:13,870 INFO [org.apache.struts.util.PropertyMessageResources] Initializing, config='org.apache.struts.taglib.logic.LocalStrings', returnNull=true 2002-10-05 03:52:13,870 INFO [org.apache.struts.util.PropertyMessageResources] Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true 2002-10-05 03:52:13,870 INFO [org.apache.struts.util.PropertyMessageResources] Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true 2002-10-05 03:52:13,870 INFO [org.apache.struts.util.PropertyMessageResources] Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true