[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-6100) Bug fix related to CriteriaQuery (JPA) when using XML mappings

Kariem Hussein (JIRA) noreply at atlassian.com
Wed Feb 15 05:17:12 EST 2012


    [ https://hibernate.onjira.com/browse/HHH-6100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=45520#comment-45520 ] 

Kariem Hussein commented on HHH-6100:
-------------------------------------

We would like to upgrade from 3.5.6 and this is an issue for us, because we have some legacy code, but no ownership in the sense that we could change the mappings to JPA/ORM. Is this issue also applicable for 4.x or 4.1?

> Bug fix related to CriteriaQuery (JPA) when using XML mappings
> --------------------------------------------------------------
>
>                 Key: HHH-6100
>                 URL: https://hibernate.onjira.com/browse/HHH-6100
>             Project: Hibernate ORM
>          Issue Type: Patch
>    Affects Versions: 3.6.2
>         Environment: hibernate-(core, entitymanager...)-3.6.2.Final
> hibernate-jpa-2.0-api-1.0.0.Final
> MySQL 5.1
> Spring 3.0.5.RELEASE 
>            Reporter: JOUFFRE Nelly
>            Priority: Critical
>         Attachments: testmapping.zip
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> Hi,
> I use XML mapping and wanted to implement the following query using CriteriaQuery.
> CriteriaBuilder cb = entityManager.getCriteriaBuilder();
> CriteriaQuery<MyClass> cq = cb.createQuery(MyClass.class);
> Root<MyClass> objRoot = cq.from(MyClass.class);
> List<MyClass> results = entityManager.createQuery(cq).getResultList();
> (Actually my query is more complex than that but it was the first step.)
> The first bug was that query generated the following jpql
> select generatedAlias0 from null as generatedAlias0
> This was because the org.hibernate.mapping.PersistentClass.jpaEntityName attribute was not set
> Once I fixed it if tried to add a WHERE clause which was
> cq.where(cb.equal(objRoot.get("embeddablePkId").get("embeddablePkIdAttribute"), "valueToSearch"));
> which resulted into a NullPointerException because the org.hibernate.mapping.RootClass.declaredIdentifierProperty attribute was not set for simple and embeddable PK
> Theses 2 attributes are well set but only when using annotation mappings because they are set via the AnnotationBinder.
> In my case, with XML mapping, it calls the HbmBinder so these attributes are never set.
> Here are my bug fixes, hope this help.
> Cheers,
> $ git diff
> diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/HbmBinder.java b/hib
> index dd0e14a..4cacb8e 100644
> --- a/hibernate-core/src/main/java/org/hibernate/cfg/HbmBinder.java
> +++ b/hibernate-core/src/main/java/org/hibernate/cfg/HbmBinder.java
> @@ -451,6 +451,7 @@ public final class HbmBinder {
>                         prop.setValue( id );
>                         bindProperty( idNode, prop, mappings, inheritedMetas );
>                         entity.setIdentifierProperty( prop );
> +                       entity.setDeclaredIdentifierProperty( prop );
>                 }
>                 // TODO:
> @@ -484,6 +485,7 @@ public final class HbmBinder {
>                         prop.setValue( id );
>                         bindProperty( idNode, prop, mappings, inheritedMetas );
>                         entity.setIdentifierProperty( prop );
> +                       entity.setDeclaredIdentifierProperty( prop );
>                 }
>                 makeIdentifier( idNode, id, mappings );
> @@ -564,6 +566,7 @@ public final class HbmBinder {
>                         throw new MappingException( "Unable to determine entity
>                 }
>                 persistentClass.setEntityName( entityName );
> +               persistentClass.setJpaEntityName( entityName );
>                 bindPojoRepresentation( node, persistentClass, mappings, inherit
>                 bindDom4jRepresentation( node, persistentClass, mappings, inheri
> (END)

--
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