Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 318625

Summary: Merging Entity with BasicCollection inserts entry into BasicCollection table again.
Product: z_Archived Reporter: Desmond Ng <desmond.ng>
Component: EclipselinkAssignee: Nobody - feel free to take it <nobody>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: desmond.ng, eclipselink.foundation-inbox, tom.ware
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Test case. none

Description Desmond Ng CLA 2010-07-01 11:15:02 EDT
Build Identifier: 20090920-1017

If an Entity contains a BasicCollection mapping, doing a merge on the table will try to insert existing BasicCollection entries into the CollectionTable again causing duplicates.

This does not happen if eclipselink.weaving.changetracking is set to false.



Reproducible: Always

Steps to Reproduce:
1. Create an entity that contains a BasicCollection mapping.
2. Persist the entity with an entry in the BasicCollection.
3. Update the entity that was just persisted, and merge the entity.
4. On flush() or commit(), the existing entry in the BasicCollection is inserted into the table again.  If the CollectionTable has a primary with the ID, a unique constraint violated exception will be thrown.

Also see attached test case, (the eclipselink.jar is not shipped, but to test use the EclipseLink 2.0.2 to reproduce).
Comment 1 Desmond Ng CLA 2010-07-01 11:17:21 EDT
Created attachment 173226 [details]
Test case.

The eclipselink.jar is not supplied in the test case to reduce file size.  To reproduce drop the eclipselink.jar from 2.0.2 into the lib directory.
Comment 2 Desmond Ng CLA 2010-07-01 11:18:11 EDT
This does not occur in EclipseLink 1.0.1
Comment 3 Tom Ware CLA 2010-08-05 15:02:04 EDT
setting initial target to 2.1.1.  Since this release is close, after the bug is triaged, we will make a determination if the fix is low enough risk to include in the 2.1.1 release.

Does this fix also need to appear in our next 2.0.x release?
Comment 4 Desmond Ng CLA 2010-08-05 17:44:02 EDT
If the fix is low risk for 2.0.x, it will be great to be able to include it as it makes the OOTB experience better and works as expected. Since there is currently a workaround, and if the fix is complex, it is not crucial for it to be in 2.0.x.
Comment 5 Tom Ware CLA 2010-08-06 16:07:33 EDT
FYI: This issue appear to be fixed in our latest release.  I will track down the change to assess the risk of fixing for 2.0.x.
Comment 6 Tom Ware CLA 2010-08-09 09:31:22 EDT
This also appear to be fixed in our latest 2.0.x code - please try the latest 2.0.3 nightly.
Comment 7 Desmond Ng CLA 2010-08-17 18:27:46 EDT
I tested build 2.0.3.v20100805-r7973 with the provided test case, and it still fails with same problem.
Comment 8 Tom Ware CLA 2010-08-18 10:23:33 EDT
Here is my output from that version(with logging = FINEST).  It does not seem to be failing for me, what am I missing?

[EL Finest]: 2010-08-18 09:50:54.498--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.logging.session; value=true
[EL Finest]: 2010-08-18 09:50:54.529--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.logging.exceptions; value=true
[EL Finest]: 2010-08-18 09:50:54.529--ServerSession(14306161)--Thread(Thread[main,5,main])--Begin predeploying Persistence Unit group-pu; session group; state Initial; factoryCount 0
[EL Finest]: 2010-08-18 09:50:54.529--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.validation-only; value=false
[EL Finest]: 2010-08-18 09:50:54.529--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.orm.throw.exceptions; default value=true
[EL Finer]: 2010-08-18 09:50:54.545--ServerSession(14306161)--Thread(Thread[main,5,main])--Searching for default mapping file in file:/C:/java/Recreations/basic_coll_dups/bin/
[EL Finer]: 2010-08-18 09:50:54.545--ServerSession(14306161)--Thread(Thread[main,5,main])--Searching for default mapping file in file:/C:/java/Recreations/basic_coll_dups/bin/
[EL Config]: 2010-08-18 09:50:54.654--ServerSession(14306161)--Thread(Thread[main,5,main])--The access type for the persistent class [class com.jpatest.model.Visit] is set to [FIELD].
[EL Config]: 2010-08-18 09:50:54.685--ServerSession(14306161)--Thread(Thread[main,5,main])--The alias name for the entity class [class com.jpatest.model.Visit] is being defaulted to: Visit.
[EL Config]: 2010-08-18 09:50:54.701--ServerSession(14306161)--Thread(Thread[main,5,main])--The table name for entity [class com.jpatest.model.Visit] is being defaulted to: VISIT.
[EL Config]: 2010-08-18 09:50:54.716--ServerSession(14306161)--Thread(Thread[main,5,main])--The column name for element [field id] is being defaulted to: ID.
[EL Config]: 2010-08-18 09:50:54.716--ServerSession(14306161)--Thread(Thread[main,5,main])--The column name for element [field location] is being defaulted to: LOCATION.
[EL Config]: 2010-08-18 09:50:54.763--ServerSession(14306161)--Thread(Thread[main,5,main])--The primary key column name for the mapping element [field reasons] is being defaulted to: ID.
[EL Config]: 2010-08-18 09:50:54.763--ServerSession(14306161)--Thread(Thread[main,5,main])--The foreign key column name for the mapping element [field reasons] is being defaulted to: ID.
[EL Finest]: 2010-08-18 09:50:54.763--ServerSession(14306161)--Thread(Thread[main,5,main])--End predeploying Persistence Unit group-pu; session group; state Predeployed; factoryCount 0
[EL Finer]: 2010-08-18 09:50:54.763--Thread(Thread[main,5,main])--JavaSECMPInitializer - transformer is null.
[EL Finest]: 2010-08-18 09:50:54.763--ServerSession(14306161)--Thread(Thread[main,5,main])--Begin predeploying Persistence Unit group-pu; session group; state Predeployed; factoryCount 0
[EL Finest]: 2010-08-18 09:50:54.763--ServerSession(14306161)--Thread(Thread[main,5,main])--End predeploying Persistence Unit group-pu; session group; state Predeployed; factoryCount 1
[EL Finest]: 2010-08-18 09:50:54.763--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.validation-only; value=false
[EL Finest]: 2010-08-18 09:50:54.779--ServerSession(14306161)--Thread(Thread[main,5,main])--Begin deploying Persistence Unit group-pu; session group; state Predeployed; factoryCount 1
[EL Finer]: 2010-08-18 09:50:54.794--ServerSession(14306161)--Thread(Thread[main,5,main])--Could not initialize Validation Factory. Encountered following exception: javax.validation.ValidationException: Unable to find a default provider
[EL Finest]: 2010-08-18 09:50:54.794--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.target-server; value=None; translated value=org.eclipse.persistence.platform.server.NoServerPlatform
[EL Finest]: 2010-08-18 09:50:54.794--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.logging.logger; value=DefaultLogger; translated value=org.eclipse.persistence.logging.DefaultSessionLog
[EL Finest]: 2010-08-18 09:50:54.794--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.logging.level; value=FINEST; translated value=FINEST
[EL Finest]: 2010-08-18 09:50:54.794--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.logging.session; value=true
[EL Finest]: 2010-08-18 09:50:54.794--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.logging.exceptions; value=true
[EL Finest]: 2010-08-18 09:50:54.794--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.logging.level; value=FINEST; translated value=FINEST
[EL Finest]: 2010-08-18 09:50:54.794--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.logging.session; value=true
[EL Finest]: 2010-08-18 09:50:54.81--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.logging.exceptions; value=true
[EL Finest]: 2010-08-18 09:50:54.81--ServerSession(14306161)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.user; value=eclipsetest
[EL Finest]: 2010-08-18 09:50:54.81--ServerSession(14306161)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.password; value=xxxxxx
[EL Finest]: 2010-08-18 09:50:55.279--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.validation-only; value=false
[EL Finest]: 2010-08-18 09:50:55.294--ServerSession(14306161)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.driver; value=com.mysql.jdbc.Driver
[EL Finest]: 2010-08-18 09:50:55.294--ServerSession(14306161)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.url; value=jdbc:mysql://localhost/eclipsedb
[EL Finest]: 2010-08-18 09:50:55.294--ServerSession(14306161)--Thread(Thread[main,5,main])--property=eclipselink.validation-only; value=false
[EL Info]: 2010-08-18 09:50:55.294--ServerSession(14306161)--Thread(Thread[main,5,main])--EclipseLink, version: Eclipse Persistence Services - 2.0.3.v20100805-r7973
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.HSQLPlatform, RegularExpression: (?i)hsql.*.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.InformixPlatform, RegularExpression: (?i)informix.*.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.PointBasePlatform, RegularExpression: (?i)pointbase.*.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.DB2Platform, RegularExpression: (?i).*db2.*.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.SQLServerPlatform, RegularExpression: (?i)microsoft.*.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.PostgreSQLPlatform, RegularExpression: (?i)postgresql.*.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.H2Platform, RegularExpression: (?i)h2.*.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.SybasePlatform, RegularExpression: (?i)(sybase.*)|(adaptive server enterprise.*)|(SQL Server).
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.FirebirdPlatform, RegularExpression: (?i)firebird.*.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.JavaDBPlatform, RegularExpression: (?i).*derby.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.oracle.Oracle10Platform, RegularExpression: (?i)oracle.*.
[EL Finest]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--DBPlatform: org.eclipse.persistence.platform.database.MySQLPlatform, RegularExpression: (?i)mysql.*.
[EL Fine]: 2010-08-18 09:50:55.56--Thread(Thread[main,5,main])--Detected Vendor platform: org.eclipse.persistence.platform.database.MySQLPlatform
[EL Config]: 2010-08-18 09:50:55.575--ServerSession(14306161)--Connection(14615608)--Thread(Thread[main,5,main])--connecting(DatabaseLogin(
	platform=>MySQLPlatform
	user name=> "eclipsetest"
	datasource URL=> "jdbc:mysql://localhost/eclipsedb"
))
[EL Config]: 2010-08-18 09:50:55.591--ServerSession(14306161)--Connection(1465214)--Thread(Thread[main,5,main])--Connected: jdbc:mysql://localhost/eclipsedb
	User: eclipsetest@localhost
	Database: MySQL  Version: 5.1.47-community
	Driver: MySQL-AB JDBC Driver  Version: mysql-connector-java-5.1.5 ( Revision: ${svn.Revision} )
[EL Config]: 2010-08-18 09:50:55.591--ServerSession(14306161)--Connection(30462244)--Thread(Thread[main,5,main])--connecting(DatabaseLogin(
	platform=>MySQLPlatform
	user name=> "eclipsetest"
	datasource URL=> "jdbc:mysql://localhost/eclipsedb"
))
[EL Config]: 2010-08-18 09:50:55.591--ServerSession(14306161)--Connection(20357537)--Thread(Thread[main,5,main])--Connected: jdbc:mysql://localhost/eclipsedb
	User: eclipsetest@localhost
	Database: MySQL  Version: 5.1.47-community
	Driver: MySQL-AB JDBC Driver  Version: mysql-connector-java-5.1.5 ( Revision: ${svn.Revision} )
[EL Info]: 2010-08-18 09:50:55.685--ServerSession(14306161)--Thread(Thread[main,5,main])--group login successful
[EL Finest]: 2010-08-18 09:50:55.716--ServerSession(14306161)--Thread(Thread[main,5,main])--Execute query DataModifyQuery(sql="DROP TABLE VISITREASON")
[EL Fine]: 2010-08-18 09:50:55.716--ServerSession(14306161)--Connection(20357537)--Thread(Thread[main,5,main])--DROP TABLE VISITREASON
[EL Finest]: 2010-08-18 09:50:55.794--ServerSession(14306161)--Thread(Thread[main,5,main])--Execute query DataModifyQuery(sql="CREATE TABLE VISITREASON (ID BIGINT NOT NULL, REASON VARCHAR(255))")
[EL Fine]: 2010-08-18 09:50:55.794--ServerSession(14306161)--Connection(20357537)--Thread(Thread[main,5,main])--CREATE TABLE VISITREASON (ID BIGINT NOT NULL, REASON VARCHAR(255))
[EL Finest]: 2010-08-18 09:50:55.856--ServerSession(14306161)--Thread(Thread[main,5,main])--Execute query DataModifyQuery(sql="DROP TABLE VISIT")
[EL Fine]: 2010-08-18 09:50:55.856--ServerSession(14306161)--Connection(20357537)--Thread(Thread[main,5,main])--DROP TABLE VISIT
[EL Finest]: 2010-08-18 09:50:55.888--ServerSession(14306161)--Thread(Thread[main,5,main])--Execute query DataModifyQuery(sql="CREATE TABLE VISIT (ID BIGINT NOT NULL, LOCATION VARCHAR(255), PRIMARY KEY (ID))")
[EL Fine]: 2010-08-18 09:50:55.903--ServerSession(14306161)--Connection(20357537)--Thread(Thread[main,5,main])--CREATE TABLE VISIT (ID BIGINT NOT NULL, LOCATION VARCHAR(255), PRIMARY KEY (ID))
[EL Finer]: 2010-08-18 09:50:56.028--ServerSession(14306161)--Thread(Thread[main,5,main])--Canonical Metamodel class [com.jpatest.model.Visit_] not found during initialization.
[EL Finest]: 2010-08-18 09:50:56.028--ServerSession(14306161)--Thread(Thread[main,5,main])--End deploying Persistence Unit group-pu; session group; state Deployed; factoryCount 1
[EL Finer]: 2010-08-18 09:50:56.059--ServerSession(14306161)--Thread(Thread[main,5,main])--client acquired
[EL Finest]: 2010-08-18 09:50:56.059--UnitOfWork(18388366)--Thread(Thread[main,5,main])--PERSIST operation called on: com.jpatest.model.Visit@1958bf9.
[EL Finer]: 2010-08-18 09:50:56.059--UnitOfWork(18388366)--Thread(Thread[main,5,main])--begin unit of work commit
[EL Finer]: 2010-08-18 09:50:56.075--ClientSession(16267615)--Connection(20357537)--Thread(Thread[main,5,main])--begin transaction
[EL Finest]: 2010-08-18 09:50:56.075--UnitOfWork(18388366)--Thread(Thread[main,5,main])--Execute query InsertObjectQuery(com.jpatest.model.Visit@1958bf9)
[EL Fine]: 2010-08-18 09:50:56.075--ClientSession(16267615)--Connection(20357537)--Thread(Thread[main,5,main])--INSERT INTO VISIT (ID, LOCATION) VALUES (?, ?)
	bind => [946718011822028915, null]
[EL Finest]: 2010-08-18 09:50:56.075--UnitOfWork(18388366)--Thread(Thread[main,5,main])--Execute query DataModifyQuery()
[EL Fine]: 2010-08-18 09:50:56.075--ClientSession(16267615)--Connection(20357537)--Thread(Thread[main,5,main])--INSERT INTO VISITREASON (ID, REASON) VALUES (?, ?)
	bind => [946718011822028915, Test]
[EL Finer]: 2010-08-18 09:50:56.091--ClientSession(16267615)--Connection(20357537)--Thread(Thread[main,5,main])--commit transaction
[EL Finer]: 2010-08-18 09:50:56.137--UnitOfWork(18388366)--Thread(Thread[main,5,main])--end unit of work commit
[EL Finer]: 2010-08-18 09:50:56.137--UnitOfWork(18388366)--Thread(Thread[main,5,main])--resume unit of work
[EL Finer]: 2010-08-18 09:50:56.137--UnitOfWork(18388366)--Thread(Thread[main,5,main])--release unit of work
[EL Finer]: 2010-08-18 09:50:56.137--ClientSession(16267615)--Thread(Thread[main,5,main])--client released
[EL Finer]: 2010-08-18 09:50:56.137--ServerSession(14306161)--Thread(Thread[main,5,main])--client acquired
[EL Finest]: 2010-08-18 09:50:56.137--UnitOfWork(31148109)--Thread(Thread[main,5,main])--Merge clone with references com.jpatest.model.Visit@1958bf9
[EL Finer]: 2010-08-18 09:50:56.153--ClientSession(18360202)--Connection(20357537)--Thread(Thread[main,5,main])--begin transaction
[EL Finest]: 2010-08-18 09:50:56.153--UnitOfWork(31148109)--Thread(Thread[main,5,main])--Execute query UpdateObjectQuery(com.jpatest.model.Visit@167d7fb)
[EL Fine]: 2010-08-18 09:50:56.153--ClientSession(18360202)--Connection(20357537)--Thread(Thread[main,5,main])--UPDATE VISIT SET LOCATION = ? WHERE (ID = ?)
	bind => [test location, 946718011822028915]
[EL Finer]: 2010-08-18 09:50:56.153--UnitOfWork(31148109)--Thread(Thread[main,5,main])--begin unit of work commit
[EL Finer]: 2010-08-18 09:50:56.153--ClientSession(18360202)--Connection(20357537)--Thread(Thread[main,5,main])--commit transaction
[EL Finer]: 2010-08-18 09:50:56.2--UnitOfWork(31148109)--Thread(Thread[main,5,main])--end unit of work commit
[EL Finer]: 2010-08-18 09:50:56.2--UnitOfWork(31148109)--Thread(Thread[main,5,main])--resume unit of work
[EL Finer]: 2010-08-18 09:50:56.2--UnitOfWork(31148109)--Thread(Thread[main,5,main])--release unit of work
[EL Finer]: 2010-08-18 09:50:56.2--ClientSession(18360202)--Thread(Thread[main,5,main])--client released
Comment 9 Desmond Ng CLA 2010-08-18 10:50:26 EDT
Here is my output that failed:


[EL Finest]: 2010-08-18 07:44:51.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.logging.session; value=true
[EL Finest]: 2010-08-18 07:44:51.19--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.logging.exceptions; value=true
[EL Finest]: 2010-08-18 07:44:51.19--ServerSession(14293164)--Thread(Thread[main,5,main])--Begin predeploying Persistence Unit group-pu; session group; state Initial; factoryCount 0
[EL Info]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property eclipselink.jdbc.user is deprecated, property javax.persistence.jdbc.user should be used instead.
[EL Info]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property eclipselink.jdbc.driver is deprecated, property javax.persistence.jdbc.driver should be used instead.
[EL Info]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property eclipselink.jdbc.url is deprecated, property javax.persistence.jdbc.url should be used instead.
[EL Info]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property eclipselink.jdbc.password is deprecated, property javax.persistence.jdbc.password should be used instead.
[EL Finest]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.validation-only; value=false
[EL Finest]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.orm.throw.exceptions; default value=true
[EL Finest]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.weaving.changetracking; default value=true
[EL Finest]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.weaving.lazy; default value=true
[EL Finest]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.weaving.eager; default value=false
[EL Finest]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.weaving.fetchgroups; default value=true
[EL Finest]: 2010-08-18 07:44:51.205--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.weaving.internal; default value=true
[EL Finer]: 2010-08-18 07:44:51.237--ServerSession(14293164)--Thread(Thread[main,5,main])--Searching for default mapping file in file:/C:/eclipse/workspaces/testcases/basic_coll_dups/bin/
[EL Finer]: 2010-08-18 07:44:51.252--ServerSession(14293164)--Thread(Thread[main,5,main])--Searching for default mapping file in file:/C:/eclipse/workspaces/testcases/basic_coll_dups/bin/
[EL Config]: 2010-08-18 07:44:51.502--ServerSession(14293164)--Thread(Thread[main,5,main])--The access type for the persistent class [class com.jpatest.model.Visit] is set to [FIELD].
[EL Config]: 2010-08-18 07:44:51.596--ServerSession(14293164)--Thread(Thread[main,5,main])--The alias name for the entity class [class com.jpatest.model.Visit] is being defaulted to: Visit.
[EL Config]: 2010-08-18 07:44:51.596--ServerSession(14293164)--Thread(Thread[main,5,main])--The table name for entity [class com.jpatest.model.Visit] is being defaulted to: VISIT.
[EL Config]: 2010-08-18 07:44:51.643--ServerSession(14293164)--Thread(Thread[main,5,main])--The column name for element [field id] is being defaulted to: ID.
[EL Config]: 2010-08-18 07:44:51.659--ServerSession(14293164)--Thread(Thread[main,5,main])--The column name for element [field location] is being defaulted to: LOCATION.
[EL Config]: 2010-08-18 07:44:51.752--ServerSession(14293164)--Thread(Thread[main,5,main])--The primary key column name for the mapping element [field reasons] is being defaulted to: ID.
[EL Config]: 2010-08-18 07:44:51.752--ServerSession(14293164)--Thread(Thread[main,5,main])--The foreign key column name for the mapping element [field reasons] is being defaulted to: ID.
[EL Finer]: 2010-08-18 07:44:51.768--ServerSession(14293164)--Thread(Thread[main,5,main])--Class [com.jpatest.model.Visit] registered to be processed by weaver.
[EL Finest]: 2010-08-18 07:44:51.784--ServerSession(14293164)--Thread(Thread[main,5,main])--End predeploying Persistence Unit group-pu; session group; state Predeployed; factoryCount 0
[EL Finer]: 2010-08-18 07:44:51.784--Thread(Thread[main,5,main])--JavaSECMPInitializer - registering transformer for group-pu.
[EL Finest]: 2010-08-18 07:44:51.955--ServerSession(14293164)--Thread(Thread[main,5,main])--Begin predeploying Persistence Unit group-pu; session group; state Predeployed; factoryCount 0
[EL Finest]: 2010-08-18 07:44:51.955--ServerSession(14293164)--Thread(Thread[main,5,main])--End predeploying Persistence Unit group-pu; session group; state Predeployed; factoryCount 1
[EL Finest]: 2010-08-18 07:44:51.955--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.validation-only; value=false
[EL Finest]: 2010-08-18 07:44:51.971--ServerSession(14293164)--Thread(Thread[main,5,main])--Begin weaver class transformer processing class [com/jpatest/model/Visit].
[EL Finest]: 2010-08-18 07:44:52.065--ServerSession(14293164)--Thread(Thread[main,5,main])--Weaved persistence (PersistenceEntity) [com/jpatest/model/Visit].
[EL Finest]: 2010-08-18 07:44:52.065--ServerSession(14293164)--Thread(Thread[main,5,main])--Weaved change tracking (ChangeTracker) [com/jpatest/model/Visit].
[EL Finest]: 2010-08-18 07:44:52.065--ServerSession(14293164)--Thread(Thread[main,5,main])--Weaved fetch groups (FetchGroupTracker) [com/jpatest/model/Visit].
[EL Finest]: 2010-08-18 07:44:52.065--ServerSession(14293164)--Thread(Thread[main,5,main])--End weaver class transformer processing class [com/jpatest/model/Visit].
[EL Finest]: 2010-08-18 07:44:52.065--ServerSession(14293164)--Thread(Thread[main,5,main])--Begin deploying Persistence Unit group-pu; session group; state Predeployed; factoryCount 1
[EL Info]: 2010-08-18 07:44:52.065--ServerSession(14293164)--Thread(Thread[main,5,main])--property eclipselink.jdbc.user is deprecated, property javax.persistence.jdbc.user should be used instead.
[EL Info]: 2010-08-18 07:44:52.065--ServerSession(14293164)--Thread(Thread[main,5,main])--property eclipselink.jdbc.driver is deprecated, property javax.persistence.jdbc.driver should be used instead.
[EL Info]: 2010-08-18 07:44:52.08--ServerSession(14293164)--Thread(Thread[main,5,main])--property eclipselink.jdbc.url is deprecated, property javax.persistence.jdbc.url should be used instead.
[EL Info]: 2010-08-18 07:44:52.08--ServerSession(14293164)--Thread(Thread[main,5,main])--property eclipselink.jdbc.password is deprecated, property javax.persistence.jdbc.password should be used instead.
[EL Finer]: 2010-08-18 07:44:52.112--ServerSession(14293164)--Thread(Thread[main,5,main])--Could not initialize Validation Factory. Encountered following exception: java.lang.NoClassDefFoundError: javax/validation/Validation
[EL Finest]: 2010-08-18 07:44:52.127--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.target-server; value=None; translated value=org.eclipse.persistence.platform.server.NoServerPlatform
[EL Finest]: 2010-08-18 07:44:52.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.logging.logger; value=DefaultLogger; translated value=org.eclipse.persistence.logging.DefaultSessionLog
[EL Finest]: 2010-08-18 07:44:52.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.logging.level; value=FINEST; translated value=FINEST
[EL Finest]: 2010-08-18 07:44:52.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.logging.session; value=true
[EL Finest]: 2010-08-18 07:44:52.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.logging.exceptions; value=true
[EL Finest]: 2010-08-18 07:44:52.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.logging.level; value=FINEST; translated value=FINEST
[EL Finest]: 2010-08-18 07:44:52.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.logging.session; value=true
[EL Finest]: 2010-08-18 07:44:52.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.logging.exceptions; value=true
[EL Finest]: 2010-08-18 07:44:52.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.user; value=destest
[EL Finest]: 2010-08-18 07:44:52.143--ServerSession(14293164)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.password; value=xxxxxx
[EL Finest]: 2010-08-18 07:44:53.096--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.target-database; value=Oracle; translated value=org.eclipse.persistence.platform.database.OraclePlatform
[EL Finest]: 2010-08-18 07:44:53.112--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.validation-only; value=false
[EL Finest]: 2010-08-18 07:44:53.112--ServerSession(14293164)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.driver; value=oracle.jdbc.OracleDriver
[EL Finest]: 2010-08-18 07:44:53.112--ServerSession(14293164)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.url; value=jdbc:oracle:thin:@dlocalhost:1521:dev03
[EL Finest]: 2010-08-18 07:44:53.112--ServerSession(14293164)--Thread(Thread[main,5,main])--property=eclipselink.validation-only; value=false
[EL Info]: 2010-08-18 07:44:53.112--ServerSession(14293164)--Thread(Thread[main,5,main])--EclipseLink, version: Eclipse Persistence Services - 2.0.3.v20100805-r7973
[EL Config]: 2010-08-18 07:44:53.143--ServerSession(14293164)--Connection(26545674)--Thread(Thread[main,5,main])--connecting(DatabaseLogin(
	platform=>OraclePlatform
	user name=> "destest"
	datasource URL=> "jdbc:oracle:thin:@localhost:1521:dev03"
))
[EL Config]: 2010-08-18 07:44:53.471--ServerSession(14293164)--Connection(5018853)--Thread(Thread[main,5,main])--Connected: jdbc:oracle:thin:@localhost:1521:dev03
	User: DESTEST
	Database: Oracle  Version: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
	Driver: Oracle JDBC driver  Version: 10.2.0.4.0
[EL Config]: 2010-08-18 07:44:53.471--ServerSession(14293164)--Connection(29578470)--Thread(Thread[main,5,main])--connecting(DatabaseLogin(
	platform=>OraclePlatform
	user name=> "destest"
	datasource URL=> "jdbc:oracle:thin:@localhost:1521:dev03"
))
[EL Config]: 2010-08-18 07:44:53.534--ServerSession(14293164)--Connection(3119471)--Thread(Thread[main,5,main])--Connected: jdbc:oracle:thin:@localhost:1521:dev03
	User: DESTEST
	Database: Oracle  Version: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
	Driver: Oracle JDBC driver  Version: 10.2.0.4.0
[EL Info]: 2010-08-18 07:44:53.69--ServerSession(14293164)--Thread(Thread[main,5,main])--group login successful
[EL Finer]: 2010-08-18 07:44:53.737--ServerSession(14293164)--Thread(Thread[main,5,main])--Canonical Metamodel class [com.jpatest.model.Visit_] not found during initialization.
[EL Finest]: 2010-08-18 07:44:53.737--ServerSession(14293164)--Thread(Thread[main,5,main])--End deploying Persistence Unit group-pu; session group; state Deployed; factoryCount 1
[EL Finer]: 2010-08-18 07:44:53.815--ServerSession(14293164)--Thread(Thread[main,5,main])--client acquired
[EL Finest]: 2010-08-18 07:44:53.83--UnitOfWork(27521400)--Thread(Thread[main,5,main])--PERSIST operation called on: com.jpatest.model.Visit@14a616.
[EL Finer]: 2010-08-18 07:44:53.83--UnitOfWork(27521400)--Thread(Thread[main,5,main])--begin unit of work commit
[EL Finer]: 2010-08-18 07:44:53.83--ClientSession(19892868)--Connection(3119471)--Thread(Thread[main,5,main])--begin transaction
[EL Finest]: 2010-08-18 07:44:53.846--UnitOfWork(27521400)--Thread(Thread[main,5,main])--Execute query InsertObjectQuery(com.jpatest.model.Visit@14a616)
[EL Fine]: 2010-08-18 07:44:53.846--ClientSession(19892868)--Connection(3119471)--Thread(Thread[main,5,main])--INSERT INTO VISIT (ID, LOCATION) VALUES (?, ?)
	bind => [4065537785412814140, null]
[EL Finest]: 2010-08-18 07:44:54.08--UnitOfWork(27521400)--Thread(Thread[main,5,main])--Execute query DataModifyQuery()
[EL Fine]: 2010-08-18 07:44:54.08--ClientSession(19892868)--Connection(3119471)--Thread(Thread[main,5,main])--INSERT INTO VISITREASON (ID, REASON) VALUES (?, ?)
	bind => [4065537785412814140, Test]
[EL Finer]: 2010-08-18 07:44:54.096--ClientSession(19892868)--Connection(3119471)--Thread(Thread[main,5,main])--commit transaction
[EL Finer]: 2010-08-18 07:44:54.096--UnitOfWork(27521400)--Thread(Thread[main,5,main])--end unit of work commit
[EL Finer]: 2010-08-18 07:44:54.096--UnitOfWork(27521400)--Thread(Thread[main,5,main])--resume unit of work
[EL Finer]: 2010-08-18 07:44:54.112--UnitOfWork(27521400)--Thread(Thread[main,5,main])--release unit of work
[EL Finer]: 2010-08-18 07:44:54.112--ClientSession(19892868)--Thread(Thread[main,5,main])--client released
[EL Finer]: 2010-08-18 07:44:54.112--ServerSession(14293164)--Thread(Thread[main,5,main])--client acquired
[EL Finest]: 2010-08-18 07:44:54.112--UnitOfWork(32586504)--Thread(Thread[main,5,main])--Merge clone with references com.jpatest.model.Visit@14a616
[EL Finer]: 2010-08-18 07:44:54.112--ClientSession(7651652)--Connection(3119471)--Thread(Thread[main,5,main])--begin transaction
[EL Finest]: 2010-08-18 07:44:54.112--UnitOfWork(32586504)--Thread(Thread[main,5,main])--Execute query UpdateObjectQuery(com.jpatest.model.Visit@5a936b)
[EL Fine]: 2010-08-18 07:44:54.127--ClientSession(7651652)--Connection(3119471)--Thread(Thread[main,5,main])--UPDATE VISIT SET LOCATION = ? WHERE (ID = ?)
	bind => [test location, 4065537785412814140]
[EL Finest]: 2010-08-18 07:44:54.127--UnitOfWork(32586504)--Thread(Thread[main,5,main])--Execute query DataModifyQuery(sql="INSERT INTO VISITREASON (ID, REASON) VALUES (?, ?)")
[EL Fine]: 2010-08-18 07:44:54.127--ClientSession(7651652)--Connection(3119471)--Thread(Thread[main,5,main])--INSERT INTO VISITREASON (ID, REASON) VALUES (?, ?)
	bind => [4065537785412814140, Test]
[EL Fine]: 2010-08-18 07:44:54.143--ClientSession(7651652)--Thread(Thread[main,5,main])--SELECT 1 FROM DUAL
[EL Warning]: 2010-08-18 07:44:54.174--UnitOfWork(32586504)--Thread(Thread[main,5,main])--Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.3.v20100805-r7973): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-00001: unique constraint (DESTEST.VISITREASON_PK) violated

Error Code: 1
Call: INSERT INTO VISITREASON (ID, REASON) VALUES (?, ?)
	bind => [4065537785412814140, Test]
Query: DataModifyQuery(sql="INSERT INTO VISITREASON (ID, REASON) VALUES (?, ?)")
	at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:801)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:867)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:587)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:530)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeCall(AbstractSession.java:914)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:206)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:192)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelectCall(DatasourceCallQueryMechanism.java:235)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelect(DatasourceCallQueryMechanism.java:215)
	at org.eclipse.persistence.internal.queries.StatementQueryMechanism.executeNoSelect(StatementQueryMechanism.java:115)
	at org.eclipse.persistence.queries.DataModifyQuery.executeDatabaseQuery(DataModifyQuery.java:85)
	at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:675)
	at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:589)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2898)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1225)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1207)
	at org.eclipse.persistence.mappings.DirectCollectionMapping.performDataModificationEvent(DirectCollectionMapping.java:1964)
	at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:130)
	at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3260)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1413)
	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:547)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithPreBuiltChangeSet(UnitOfWorkImpl.java:1559)
	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:360)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:696)
	at com.jpatest.tester.Tester.testVisit(Tester.java:34)
	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:597)
	at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
	at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
	at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
	at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
	at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
	at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
	at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
	at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
	at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
	at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
	at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
	at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.sql.SQLException: ORA-00001: unique constraint (DESTEST.VISITREASON_PK) violated

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
	at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:219)
	at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:970)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1190)
	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)
	at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3454)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:792)
	... 46 more
Comment 10 Tom Ware CLA 2010-08-18 11:09:55 EDT
We both seem to be running the same version with different results.  Do you have any ideas about what could be different?  The only thing I can think of is the VM.  Specifically, what VM are you running?
Comment 11 Desmond Ng CLA 2010-08-18 12:08:55 EDT
I am running on Windows XP with the JVM version

java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode)
Comment 12 Tom Ware CLA 2010-08-18 13:20:53 EDT
I can now recreate the issue in the 2.0.x stream.  Our 2.1 stream continues to work as expected.
Comment 13 Tom Ware CLA 2010-08-18 14:23:07 EDT
It looks as though this issue was fixed as a side effect of other changes in our 2.1 stream, it is difficult to isolate it from the other changes, so unless it is urgent we would prefer not to backport.
Comment 14 Desmond Ng CLA 2010-08-19 10:45:06 EDT
We can stay with the workaround of annotating the class that contains the BasicCollection mapping with ChangeTracking(DEFERRED) until we uptake 2.1.x.
Comment 15 Eclipse Webmaster CLA 2022-06-09 10:29:05 EDT
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink