[
http://opensource.atlassian.com/projects/hibernate/browse/METAGEN-71?page...
]
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