[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5024?page=c...
]
Adrian Hummel commented on HHH-5024:
------------------------------------
Yes. This is still an issue using 3.5.1-Final.
The following error is logged during initialization:
20:49:50,578 ERROR MetadataContext.registerAttribute:413 - Unable to locate static
metamodel field : org.foo.test.jpa2.hibernate.customer.CustomerId_#id
Btw: the query used in the CustomerTest (see attached ZIP) should be replaced by the
following query in order to let the test fail:
Customer fetchedCustomer =
em.createQuery(customerQuery.where(cb.equal(customerRoot.get(Customer_.customerId).get(CustomerId_.id),
id.getId())))
.getSingleResult();
MetadataContext#registerAttribute does not recognize inherited
fields
---------------------------------------------------------------------
Key: HHH-5024
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5024
Project: Hibernate Core
Issue Type: Bug
Components: entity-manager, metamodel
Affects Versions: 3.5.0-CR-2
Environment: Hibernate 3.5.0-CR-2, JPA Modelgen 1.0.0-CR-1
Reporter: Adrian Hummel
Priority: Critical
Attachments: bugreport.zip
The embeddable class {{CustomerId}} (see attached ZIP) inherits from the base class
{{AbstractIdentity}} (annotated with {{@MappedSuperclass}}). The metamodel classes for
these two classes are correctly generated:
{code:title=AbstractIdentity_.java|borderStyle=solid}
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;
@StaticMetamodel(AbstractIdentity.class)
public abstract class AbstractIdentity_ {
public static volatile SingularAttribute<AbstractIdentity, String> id;
}
{code}
and
{code:title=CustomerId_.java|borderStyle=solid}
import javax.persistence.metamodel.StaticMetamodel;
@StaticMetamodel(CustomerId.class)
public abstract class CustomerId_ extends AbstractIdentity_ {
}
{code}
When building the entity manager factory, {{MetadataContext#registerAttribute}} (line
378) tries to resolve the field {{CustomerId_.id}} using {{Class#getDeclaredField}}. This
results in a {{NoSuchFieldException}} because the field is declared in the super class
{{AbstractIdentity_}}.
Proposed solution: Since all field declarations in the metamodel are public, the
{{Class#getField}} method should be used instead.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira