[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-6100) Bug fix related to CriteriaQuery (JPA) when using XML mappings
Kariem Hussein (JIRA)
noreply at atlassian.com
Mon Feb 20 05:57:12 EST 2012
[ https://hibernate.onjira.com/browse/HHH-6100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=45558#comment-45558 ]
Kariem Hussein commented on HHH-6100:
-------------------------------------
Thank you for confirming that we also had this issue on 4.x/4.1 and providing a fix. If possible, please also update the affects version field on this issue.
Unfortunately, I have just seen that [my pull request|https://github.com/hibernate/hibernate-orm/pull/275] was closed with the notice _"development work has been moved to 4.x, there is no further plan for 3.6"_. To my understanding, we won't see a fix for that on 3.6 although a test case and fix has been provided nearly 100 days before that (now assumed) final release 3.6.10.
> 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