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

Steve Ebersole (JIRA) noreply at atlassian.com
Fri Aug 19 14:44:02 EDT 2011


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

Steve Ebersole commented on HHH-6100:
-------------------------------------

Need a test case that illustrates the problem.  Please see http://www.hibernate.org/issuetracker.html

> Bug fix related to CriteriaQuery (JPA) when using XML mappings
> --------------------------------------------------------------
>
>                 Key: HHH-6100
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6100
>             Project: Hibernate Core
>          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
>   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