MySQL problem - column xxx specified twice
mzint Aug 2, 2004 3:48 PMHi there,
I just switched my datasource from Hypersonic to MySQL.
JBoss Version 3.2.5
MySQL Version 4.0.18
Connector/J Version 3.0.14
The szenario is like this - I have a contract which consists of components that in turn have fields ordered by a sequence holding a value. The aggregation table stores all this information including references to the contract and the component table. As per Spec I initialize the CMP fields in the ejbCreate-method and set the CMR-relations in the ejbPostCreate-method.
The Statement that JBoss tries to execute is:
DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.ComponentFieldValue] Executing SQL: INSERT INTO COMPONENTFIELDVALUE (CONTRACT, COMPONENT, FIELDNAME, SEQUENCE, VALUE, component, contract) VALUES (?, ?, ?, ?, ?, ?, ?)
Everything was running fine with Hypersonic, but now I get the following error message:
ERROR [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.ComponentFieldValue] Could not create entity java.sql.SQLException: General error, message from server: "Column 'CONTRACT' specified twice" at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1977) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1163) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1272) at com.mysql.jdbc.Connection.execSQL(Connection.java:2236) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1741) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1588) at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:335).......
// ============================================================== // Create Method // ============================================================== /** * @return * @throws CreateException * * @ejb.create-method */ public ComponentFieldValuePK ejbCreateFieldValue(Integer contract, Integer component, String fieldname, String value, ContractLocal conl , ComponentLocal coml) throws CreateException, FinderException{ setContract(contract); setComponent(component); setFieldname(fieldname); setSequence(new Integer(0)); setValue(value); return null; } public void ejbPostCreateFieldValue(Integer contract, Integer component, String fieldname, String value, ContractLocal conl, ComponentLocal coml){ setContractCMR(conl); setComponentCMR(coml); } // ============================================================== // Container Managed Relations // ============================================================== /** * @return * * @ejb.interface-method * @ejb.relation name = "ContractAndCFValueRelation" * role-name = "CFValueHasContract" * target-role-name = "ContractHasCFValues" * target-ejb = "Contract" * cascade-delete = "yes" * * @jboss.relation fk-column = "contract" * related-pk-field = "id" * fk-constraint = "true" */ public abstract ContractLocal getContractCMR(); public abstract void setContractCMR(ContractLocal con); /** * @return * * @ejb.interface-method * @ejb.relation name = "ComponentAndCFValueRelation" * role-name = "CFValueHasComponent" * target-role-name = "ComponentHasCFValue" * target-ejb = "Component" * cascade-delete = "yes" * * @jboss.relation fk-column = "component" * related-pk-field = "id" * fk-constraint = "true" */ public abstract ComponentLocal getComponentCMR(); public abstract void setComponentCMR(ComponentLocal col);
I found a posting on the net that has the same problem, but I couldn't find a solution yet.
http://www.mail-archive.com/middlegen-user@lists.sourceforge.net/msg00317.html
Has anybody solved this problem yet ?? Is this a JBoss issue or a MySQL issue ??
thanks
matt