Note that there are some explanatory texts on larger screens.

plurals
  1. POJPA EclipseLink @ElementCollection not updating properly
    primarykey
    data
    text
    <p>Using EclipseLink 2.3.2 with static weaving (Maven plugin) against OracleXE.</p> <p>I have the following Entity</p> <pre><code>@Entity @Table(name="LIST") public class List { ...Id... @ElementCollection(fetch = FetchType.EAGER) @CollectionTable(name = "LIST_CONTENTS", joinColumns = @JoinColumn(name = "LIST_ID")) @OrderColumn(name = "SEQ") @Column(name = "CONTENT", length = 4000) private java.util.List&lt;String&gt; contents; } </code></pre> <p>and when I update the contents by doing the following:</p> <pre><code>// newContents is a String[] em.getTransaction().begin(); List list = em.find(List.class,id); list.setContents(new ArrayList&lt;String&gt;(Arrays.asList(newContents))); em.getTransaction().commit(); </code></pre> <p>I get a duplicate key error - like it didn't delete the old data</p> <pre><code>&gt; Error Code: 1 Call: INSERT INTO NIBR_LIST_CONTENTS (LIST_ID, CONTENT, &gt; SEQ) VALUES (?, ?, ?) &gt; bind =&gt; [3 parameters bound] Query: DataModifyQuery(sql="INSERT INTO NIBR_LIST_CONTENTS (LIST_ID, CONTENT, &gt; SEQ) VALUES (?, ?, ?)") &gt; at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:102) &gt; at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63) &gt; at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:512) &gt; ... 54 more Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): &gt; org.eclipse.persistence.exceptions.DatabaseException Internal &gt; Exception: java.sql.SQLIntegrityConstraintViolationException: &gt; ORA-00001: unique constraint (ANNEX.NIBR_LIST_CONTENTS_PK) violated &gt; &gt; Error Code: 1 Call: INSERT INTO NIBR_LIST_CONTENTS (LIST_ID, CONTENT, &gt; SEQ) VALUES (?, ?, ?) &gt; bind =&gt; [3 parameters bound] Query: DataModifyQuery(sql="INSERT INTO NIBR_LIST_CONTENTS (LIST_ID, CONTENT, &gt; SEQ) VALUES (?, ?, ?)") &gt; at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324) &gt; at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:840) &gt; at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:906) &gt; at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:592) &gt; at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535) &gt; at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1717) &gt; at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253) &gt; at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207) &gt; at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193) &gt; at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelectCall(DatasourceCallQueryMechanism.java:236) &gt; at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelect(DatasourceCallQueryMechanism.java:216) &gt; at org.eclipse.persistence.internal.queries.StatementQueryMechanism.executeNoSelect(StatementQueryMechanism.java:115) &gt; at org.eclipse.persistence.queries.DataModifyQuery.executeDatabaseQuery(DataModifyQuery.java:85) &gt; at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:844) &gt; at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:743) &gt; at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871) &gt; at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1516) &gt; at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1498) &gt; at org.eclipse.persistence.mappings.DirectCollectionMapping.performDataModificationEvent(DirectCollectionMapping.java:2080) &gt; at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:157) &gt; at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3799) &gt; at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1415) &gt; at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:636) &gt; at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1505) &gt; at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:267) &gt; at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:1143) &gt; at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:84) &gt; ... 56 more Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique &gt; constraint (ANNEX.NIBR_LIST_CONTENTS_PK) violated &gt; &gt; at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440) &gt; at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) &gt; at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837) &gt; at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445) &gt; at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191) &gt; at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523) &gt; at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207) &gt; at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1010) &gt; at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315) &gt; at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576) &gt; at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657) &gt; at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350) &gt; at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:831) &gt; ... 81 more </code></pre> <p>I've no idea what's wrong in the setup - I am using flyway to execute the SQL/DDL that I've written by hand. Any help is appreciated.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload