[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] Problem on persisting ElementCollection mapping inside an embedded object
|
It is not expected behavior.
The code you post is wrong though,
>> @Embedded
>> Public Phones implements Serializable
@Embedded should be @Embeddable, not sure if it is just a typo.
Try putting the ElementCollection in the parent, does it work? If it does,
it would seem to be a bug, try the latest release, if it still occurs then
log a bug, and include your test case.
Alay, Aysun wrote:
>
> Hi all,
>
>
>
> I get a "Missing mapping for field" error (you can see the full stack
> trace below) when I tried to persist an entity via EclipseLink 2.3.2. The
> problem is related with having ElementCollection mapping for a List of
> complex type inside an embedded object. I just wanted to check if this is
> a bug or an expected behavior.
>
> Here is my JPA mapping
>
>
>
> @Entity
>
> public Employee implements Serializable
>
> {
>
> @Id
>
> Long id;
>
>
>
> @Embedded
>
> Private employeeBasic;
>
> }
>
>
>
> @Embedable
>
> Public EmployeeBasic implements Serializable
>
> {
>
>
>
> @ElementCollection
>
> @CollectionTable(name="PHONES", joinColumns =
> @JoinColumn(name="EMPLOYEE_ID"))
>
> PrĂvate List<Phones> phones;
>
>
>
> }
>
>
>
> @Embedded
>
> Public Phones implements Serializable
>
> {
>
> @Column(name="PHONE_TYPE")
>
> prĂvate String phoneType;
>
>
>
> @Column(name="PHONE_NUMBER")
>
> private long phoneNumber;
>
>
>
>
>
> When I tried to persist Employee, I am getting this exception. The same
> code works if I have a simple data type like List<String> instead of
> List<Phones>
>
>
>
>
>
> Exception in thread "main" javax.persistence.RollbackException:
> Exception [EclipseLink-45] (Eclipse Persistence Services -
> 2.3.2.v20111125-r10461):
> org.eclipse.persistence.exceptions.DescriptorException
>
> Exception Description: Missing mapping for field [EMPLOYEE.ID].
>
> Descriptor: RelationalDescriptor(com.test.EmployeeBasic -->
>
> [DatabaseTable(EMPLOYEE)])
>
> at
>
> org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:102)
>
> at
>
> org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63)
>
> at com.test.TestAddAttr.main(TestAddAttr.java:35)
>
> Caused by: Exception [EclipseLink-45] (Eclipse Persistence Services -
>
> 2.3.2.v20111125-r10461):
> org.eclipse.persistence.exceptions.DescriptorException
>
> Exception Description: Missing mapping for field [EMPLOYEE.ID].
>
> Descriptor: RelationalDescriptor(com.test.EmployeeBasic -->
>
> [DatabaseTable(EMPLOYEE)]).eclipse.persistence.exceptions.DescriptorException.missingMappingForField(DescriptorException.java:969)
>
> at
> org.eclipse.persistence.internal.descriptors.ObjectBuilder.extractValueFromObjectForField(ObjectBuilder.java:2566)
>
> at
> org.eclipse.persistence.mappings.AggregateCollectionMapping.getReferenceObjectKeys(AggregateCollectionMapping.java:1229)
>
> at
> org.eclipse.persistence.mappings.AggregateCollectionMapping.getAndPrepareModifyQueryForInsert(AggregateCollectionMapping.java:2248)
>
> at
> org.eclipse.persistence.mappings.AggregateCollectionMapping.preInsert(AggregateCollectionMapping.java:2193)
>
> at
> org.eclipse.persistence.descriptors.DescriptorQueryManager.preInsert(DescriptorQueryManager.java:1099)
>
> at
> org.eclipse.persistence.mappings.AggregateMapping.preInsertAttributeValue(AggregateMapping.java:787)
>
> at
> org.eclipse.persistence.mappings.AggregateMapping.preInsert(AggregateMapping.java:757)
>
> at
> org.eclipse.persistence.descriptors.DescriptorQueryManager.preInsert(DescriptorQueryManager.java:1099)
>
> at
> org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:425)
>
> at
> org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80)
>
> at
> org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90)
>
> at
> org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:287)
>
> at
> org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58)
>
> at
> org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:829)
>
> at
> org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:728)
>
> at
> org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108)
>
> at
> org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85)
>
> at
> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2863)
>
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1501)
>
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1483)
>
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1443)
>
> at
> org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:224)
>
> at
> org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:123)
>
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3784)
>
> at
> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1407)
>
> at
> org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:634)
>
> at
> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1497)
>
> at
> org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:265)
>
> at
> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:1135)
>
> at
> org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:84)
>
> ... 2 more
>
>
>
>
>
> Thanks,
>
> Aysun
>
>
>
-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
http://www.eclipse.org/eclipselink/
EclipseLink , http://www.oracle.com/technology/products/ias/toplink/
TopLink
Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink ,
http://wiki.oracle.com/page/TopLink TopLink
Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
http://www.eclipse.org/forums/index.php?t=thread&frm_id=111&S=1b00bfd151289b297688823a00683aca
EclipseLink
Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
Blog: http://java-persistence-performance.blogspot.com/ Java Persistence
Performance
--
View this message in context: http://old.nabble.com/Problem-on-persisting-ElementCollection-mapping-inside-an-embedded-object-tp33453913p33458430.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.