openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pinaki Poddar (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OPENJPA-2305) Canonical MetaModel class generation should not use inhertence
Date Fri, 01 Mar 2013 20:37:13 GMT

    [ 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

Mime
View raw message