[
https://issues.apache.org/jira/browse/OPENJPA-2305?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13590911#comment-13590911
]
Pinaki Poddar commented on OPENJPA-2305:
----------------------------------------
As per spec, the inheritance hierarchy of the generated metamodel class must
mirror that of the domain classes. However we need exact class as the generic
parameter of the declared meta-fields. So the solution is as follows
@Entity public class Base { private int x;}
@Entity public class Derived extends Base {}
public class Base_ {public static volatile SingularAttribute<Base,Integer> x;}
public class derived_ extends Base_ {public static volatile
SingularAttribute<Derived,Integer> x;} // rewrite the base variable with owning
class as generic parameter
> Canonical MetaModel class generation should not use inhertence
> --------------------------------------------------------------
>
> Key: OPENJPA-2305
> URL: https://issues.apache.org/jira/browse/OPENJPA-2305
> Project: OpenJPA
> Issue Type: Bug
> Components: criteria
> Affects Versions: 2.2.1.1
> Reporter: Pinaki Poddar
> Assignee: Pinaki Poddar
> Fix For: 2.3.0, 2.2.1.1
>
>
> The generated source code for canonical metamodel classes mirrored the same
> inheritance hierarchy of the domain classes. This strategy exposed an error
> that resulted in wrong target SQL query under the following domain model
> a) A @MappedSuperClass M defined a primary key field x
> b) The primary key field x is an @EmbeddedId E
> c) An @Entity class D derived from M and navigated to the fields of E via x
> The solution is to generate canonical class D_.java as a flattened structure
> instead of inheriting from M_.java (as is done currently).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira