You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Pinaki Poddar (JIRA)" <ji...@apache.org> on 2013/03/01 21:37:13 UTC

[jira] [Commented] (OPENJPA-2305) Canonical MetaModel class generation should not use inhertence

    [ 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