[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