Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-dev] Bug 241765 - JPA 2.0 Derived identities

Thanks Gordn for the pointers.
I think I got the updated version now.
Caused by: Exception [EclipseLink-8024] (Eclipse Persistence Services -
2.0.0.v20091127-r5931)

And the roadblock on derived entity mapping is resolved. Thanks.

I am seeing errors in JPQL query that worked with OpenJPA. But I can not
complaint. Because I am trying to emulate a *strictly* specification
compliant sample while the failures in queries under strict scrutiny can not
be termed as fully compliant. 
I have posted the failures in the users' list anyway for your
comments/perusal.

Regards --



Gordon Yorke wrote:
> 
> Hello Pinaki,
>     You can confirm the EclipseLink version by setting the log level to 
> INFO and looking for the EclipseLink version string.  In the logs you 
> posted you are using version 1.1.0 not 2.0.  There must be a runtime 
> environment classpath issue.
> 
> You can download the latest EclipseLink from 
> http://www.eclipse.org/eclipselink/downloads/
> You can decompile/look at the machine code of the 
> org.eclipse.persistence.Version.class file if you have any doubts that 
> the logged version is incorrect.
> --Gordon
> 
> Pinaki Poddar wrote:
>> Hi Gordon,
>>   I downloded from [1]. Thinking that is the latest. The website mentions
>> that the bundle is at revision 
>> eclipselink-2.0.0.v20091127-r5931. But once you mentioned that I may be
>> using an old version, I notice that the error messages print a different
>> version number such as
>>    Exception [EclipseLink-30005] (Eclipse Persistence Services -
>> 1.1.0.r3634): ....
>>
>>   It is unlikely (but not impossible) that it is a build/run
>> environmental
>> mistake -- I am double0checking that.
>>
>>   Questions:
>>   1. Can you please confirm where I can downlod the latest EclipeLink
>> libraries? 
>>   2. Is there an utility that prints out the revision numbr of the
>> library?
>> Or any other suggested mechanism to verify the download is at a specific
>> revision?  
>>  
>>   Thanks --
>>
>> [1]
>> http://www.eclipse.org/downloads/download.php?file=/rt/eclipselink/releases/2.0.0/eclipselink-2.0.0.v20091127-r5931.zip 
>>
>>
>>
>> Gordon Yorke wrote:
>>   
>>> Hello Pinaki,
>>>    The version of EclipseLink you are using is very old and is not JPA
>>> 2.0
>>> compatible.  You will need to upgrade to EclipseLink 2.0
>>> --Gordon
>>>
>>>
>>> Pinaki Poddar wrote:
>>>     
>>>> Hi,
>>>>   While the error message is fairly clear why it thinks the mapping
>>>> definitions are wrong, here is the JPA 2.0 spec (sec 2.4.1.1:
>>>> Specification of Derived Identities)
>>>> "If the dependent entity uses an id class to represent its primary key,
>>>> one of the two following rules must
>>>> be observed:"
>>>>   // lines ommitted
>>>>   "If an Id attribute in the entity is a many-to-one or one-to-one
>>>> relationship to a parent
>>>> entity, the corresponding attribute in the id class must be of the same
>>>> Java type as the
>>>> id class or embedded id of the parent entity (if the parent entity has
>>>> a
>>>> composite primary
>>>> key) or the type of the Id attribute of the parent entity (if the
>>>> parent
>>>> entity has a
>>>> simple primary key)."
>>>>
>>>>
>>>>   My reading is LineItem (child) having a @Id @ManyToOne PurchaseOrder
>>>> and LineItem using @IdClass(LineItemId.class) fit into the above spec
>>>> scenario. 
>>>>
>>>>   Regards --
>>>>
>>>> Pinaki
>>>>  
>>>>
>>>> Pinaki Poddar wrote:
>>>>       
>>>>> Hi,
>>>>>   A typical Order-LineItem definition where LineItem uses compound,
>>>>> derived identity.
>>>>> Is this mapping supported in 1.1.0.r3634 or any later available
>>>>> versions?
>>>>>
>>>>>   The mapping fails with following error message (detailed stack trace
>>>>> at the end)
>>>>>
>>>>>      [java] Caused by: Exception [EclipseLink-7149] (Eclipse
>>>>> Persistence
>>>>> Services - 1.1.0.r3634):
>>>>> org.eclipse.persistence.exceptions.ValidationException
>>>>>      [java] Exception Description: The composite primary key attribute
>>>>> [order] of type [class domain.PurchaseOrder] on entity class [class
>>>>> domain.LineItem] should be of the same type as defined on its primary
>>>>> key class [domain.LineItemId]. That is, it should be of type [long].   
>>>>>
>>>>>   
>>>>> Here are the entity definitions:
>>>>>  
>>>>>   A "parent" entity with a simple identity of a long field 
>>>>> -------------------------------------------------------------
>>>>> @Entity
>>>>> public class PurchaseOrder implements Serializable {
>>>>>     @Id
>>>>>     private long id;
>>>>> }
>>>>> -------------------------------------------------------------
>>>>>  A "child" entity that 
>>>>>    -- uses a separate Id class
>>>>>    -- uses a compound identity
>>>>>    -- derives part of its identity from "parent"
>>>>> -------------------------------------------------------------               
>>>>>   @Entity
>>>>>   @IdClass(LineItemId.class)
>>>>>   public class LineItem implements Serializable {
>>>>>     @Id
>>>>>     @ManyToOne
>>>>>     private PurchaseOrder order; // field name must match the field
>>>>> name
>>>>> in LineItem.LineItemId
>>>>>     
>>>>>     @Id
>>>>>     @OrderColumn
>>>>>     @Column(name="IDX") // index is keyword
>>>>>     private int index;  // field name must match the field name in
>>>>> LineItem.LineItemId
>>>>> ---------------------------------------------------------------
>>>>>    And the separate Id class
>>>>> ---------------------------------------------------------------
>>>>> public class LineItemId implements Serializable {
>>>>>     long order;  
>>>>>     int index; 
>>>>>
>>>>> The runtime fails with the following error:
>>>>>
>>>>>
>>>>>      [java] Caused by: Exception [EclipseLink-7149] (Eclipse
>>>>> Persistence
>>>>> Services - 1.1.0.r3634):
>>>>> org.eclipse.persistence.exceptions.ValidationException
>>>>>      [java] Exception Description: The composite primary key attribute
>>>>> [order] of type [class domain.PurchaseOrder] on entity class [class
>>>>> domain.LineItem] should be of the same type as defined on its primary
>>>>> key class [domain.LineItemId]. That is, it should be of type [long].
>>>>>      [java]     at
>>>>> org.eclipse.persistence.exceptions.ValidationException.invalidCompositePKAttribute(ValidationException.java:1082)
>>>>>      [java]     at
>>>>> org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.validatePKClassId(MetadataDescriptor.java:1438)
>>>>>      [java]     at
>>>>> org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.IdAccessor.process(IdAccessor.java:65)
>>>>>      [java]     at
>>>>> org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.processAccessors(MetadataDescriptor.java:1082)
>>>>>      [java]     at
>>>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessorsClassAccessor.java:636)
>>>>>      [java]     at
>>>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processAccessors(EntityAccessor.java:611)
>>>>>      [java]     at
>>>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.process(EntityAccessor.java:530)
>>>>>      [java]     at
>>>>> org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:446)
>>>>>      [java]     at
>>>>> org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:303)
>>>>>      [java]     at
>>>>> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:838)
>>>>>
>>>>>
>>>>>   
>>>>>    
>>>>>
>>>>>
>>>>>
>>>>> christopher delahunt wrote:
>>>>>         
>>>>>> Bug 241765 - JPA 2.0 Derived identities
>>>>>> Checked into main.
>>>>>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=241765
>>>>>> reviewed by Gordon and Guy
>>>>>> _______________________________________________
>>>>>> eclipselink-dev mailing list
>>>>>> eclipselink-dev@xxxxxxxxxxx
>>>>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-dev
>>>>>>
>>>>>>
>>>>>>           
>>>>>         
>>>>       
>>>     
>>
>>   
> 
> _______________________________________________
> eclipselink-dev mailing list
> eclipselink-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-dev
> 
> 

-- 
View this message in context: http://old.nabble.com/Bug-241765---JPA-2.0-Derived-identities-tp21810451p27410163.html
Sent from the EclipseLink - Dev mailing list archive at Nabble.com.



Back to the top