[hibernate-issues] [Hibernate-JIRA] Commented: (METAGEN-71) Metamodel check fails when subclasses are used

kk (JIRA) noreply at atlassian.com
Wed Jul 20 10:26:14 EDT 2011


    [ http://opensource.atlassian.com/projects/hibernate/browse/METAGEN-71?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=42999#comment-42999 ] 

kk commented on METAGEN-71:
---------------------------

OK, I think I got to the problem (and the solution).

It's an issue with the Annotationbinder.java (and not of the metamodel)

The problem is that eventually a new PropertyBinder is created but the method 'setDeclaredClass()' is not called.
But maybe this is necessary (I don't know).
There are 2 solutions:
1. Fix AnnotationBinder.java.
   The method AnnocationBinder.bindComponent() creates a new PropertyBinder but it
   doesn't call PropertyBinder.setDeclaringClass().
   The solution is to add the line:
     binder.setDeclaringClass(inferredData.getDeclaringClass());
2. If it is on purpose that the declaringclass is null than you should relax the
   errormessage in the metamodel. You should also check if the superclass contains
   the property (see my initial bugreport)

I hope this is enough information.


> Metamodel check fails when subclasses are used
> ----------------------------------------------
>
>                 Key: METAGEN-71
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/METAGEN-71
>             Project: Hibernate Metamodel Generator
>          Issue Type: Bug
>          Components: processor
>    Affects Versions: 1.1.1.Final
>            Reporter: kk
>            Assignee: Hardy Ferentschik
>             Fix For: 1.2.next
>
>
> Situation:
> Class 'AbstractIntake' which has the field 'm_startDate'
> Class 'Intake' extends 'AbstractIntake'
> In Class 'AbstractIntake_.java" there is the line:
> 	public static volatile SingularAttribute<WorkOrder, MESDateField> m_startDate;
> 'm_startDate' is of type MESDateField which is an Embeddable object.
> Result:
> I get the following error when the metamodel is checked:
> Unable to locate static metamodel field : gti.domain.Intake_#m_startDate
> Expected:
> 'Intake_' subclasses 'AbstractIntake_' and therefore has access to the
> static variable 'm_startDate' (in AbstractIntake_). The errormessage is 
> therefore not valid!
> Hints:
> MESDateField is an Embeddable object.
> It seems to only to go wrong with Embeddable objects.
> Maybe the problem is in "MetadataContext.registerAttribute()'.
> There ONLY the getDeclaredField(name) of the class is checked but NOT the
> subclasses of that class!

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list