[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-1829) Allow join on any property using property-ref

Mathieu Gervais (JIRA) noreply at atlassian.com
Mon Sep 21 12:07:57 EDT 2009


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

Mathieu Gervais commented on HHH-1829:
--------------------------------------

Hi Steve.

Thanks for looking into this issue.

1) I'm from the same company has Robert Field who recently commented. In case that helps, I've ran and API diff (using CLIRR) on the patched (HHH-1829-mwinkels.patch) vs unpatched 3.2.5.ga. Here are the results:

ERROR: 7004: org.hibernate.hql.ast.exec.AbstractStatementExecutor: In method 'protected java.lang.String generateIdSubselect(org.hibernate.persister.entity.Queryable)' the number of arguments has changed
INFO: 7011: org.hibernate.mapping.DependantValue: Method 'public void createForeignKeyOfEntity(java.lang.String)' has been added
INFO: 7011: org.hibernate.mapping.DependantValue: Method 'public java.util.Iterator getReferencedColumns()' has been added
INFO: 7011: org.hibernate.mapping.DependantValue: Method 'public java.lang.String getReferencedPropertyName()' has been added
INFO: 7011: org.hibernate.mapping.DependantValue: Method 'public void setReferencedPropertyName(java.lang.String)' has been added
ERROR: 7006: org.hibernate.mapping.Join: Return type of method 'public org.hibernate.mapping.KeyValue getKey()' has been changed to org.hibernate.mapping.DependantValue
ERROR: 7005: org.hibernate.mapping.Join: Parameter 1 of 'public void setKey(org.hibernate.mapping.KeyValue)' has changed its type to org.hibernate.mapping.DependantValue
INFO: 7011: org.hibernate.persister.entity.AbstractEntityPersister: Method 'public void addIdentifierColumns(java.lang.String, org.hibernate.sql.SelectFragment)' has been added
ERROR: 7004: org.hibernate.persister.entity.AbstractEntityPersister: In method 'public void delete(java.io.Serializable, java.lang.Object, java.lang.Object, org.hibernate.engine.SessionImplementor)' the number of arguments has changed
INFO: 7011: org.hibernate.persister.entity.AbstractEntityPersister: Method 'public java.lang.String[] getIdentifierColumnNames(int)' has been added
INFO: 7011: org.hibernate.persister.entity.AbstractEntityPersister: Method 'protected java.io.Serializable getIdentifierForJoin(int, java.io.Serializable, java.lang.Object[])' has been added
INFO: 7011: org.hibernate.persister.entity.AbstractEntityPersister: Method 'public org.hibernate.type.Type getIdentifierType(int)' has been added
INFO: 7011: org.hibernate.persister.entity.AbstractEntityPersister: Method 'protected java.lang.String[] getJoinColumnNames(int)' has been added
ERROR: 7004: org.hibernate.persister.entity.EntityPersister: In method 'public void delete(java.io.Serializable, java.lang.Object, java.lang.Object, org.hibernate.engine.SessionImplementor)' the number of arguments has changed
ERROR: 7012: org.hibernate.persister.entity.Loadable: Method 'public java.lang.String[] getIdentifierColumnNames(int)' has been added to an interface
ERROR: 7012: org.hibernate.persister.entity.Queryable: Method 'public void addIdentifierColumns(java.lang.String, org.hibernate.sql.SelectFragment)' has been added to an interface
ERROR: 7004: org.hibernate.persister.entity.Queryable: In method 'public java.lang.String[] getIdentifierColumnNames()' the number of arguments has changed
INFO: 7011: org.hibernate.persister.entity.SingleTableEntityPersister: Method 'public void addIdentifierColumns(java.lang.String, org.hibernate.sql.SelectFragment)' has been added
INFO: 7011: org.hibernate.persister.entity.SingleTableEntityPersister: Method 'public java.lang.String[] getIdentifierColumnNames(int)' has been added
INFO: 7011: org.hibernate.persister.entity.SingleTableEntityPersister: Method 'protected java.io.Serializable getIdentifierForJoin(int, java.io.Serializable, java.lang.Object[])' has been added
INFO: 7011: org.hibernate.persister.entity.SingleTableEntityPersister: Method 'public org.hibernate.type.Type getIdentifierType(int)' has been added
INFO: 7011: org.hibernate.persister.entity.SingleTableEntityPersister: Method 'protected java.lang.String[] getJoinColumnNames(int)' has been added


2)
> The issue is that I really just have no idea about the state of the attached patches. Which are pertinent? Which are valid?

Here is my understanding of the current state, from comments on this Jira and the attachments history @ http://opensource.atlassian.com/projects/hibernate/secure/ManageAttachments.jspa?id=15640  :

-In Nov/06 Andrew Seales  posted an initial patch with no tests.
-Subsequently, Maarten Winkels posted tests commenting "I think they show very basic cases where the functionality is needed.".
-Following the test cases submitted by Maarten, Andrew noted issues with his patch, and said he would post a fixed one, which he didn't do (Andrew didn't post anything else since then)
-In Feb/07, Maarten posted a patch ( HHH-1829-mwinkels.patch ) passing all tests, including the ones attached to this issue. His comment are @ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1829?focusedCommentId=26029&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_26029
- We used that patch with success. No one reported issues with that patch on this jira item.

So in summary, I'd say you should only look at the later patch ( HHH-1829-mwinkels.patch ).

We understand your concerns about applying a patch that doesn't seem polished enough (Maarten mentioned that "the code is not very clean"). I guess ideally at this point there would be collaboration between someone with hibernate internals deep expertise and the author(s) of the patches to iron out any issues and raise the confidence level. Maybe the first step would be for the patch to be reviewed by someone from the hibernate team to indicate any issues / concerns with it, and then the community can address those? Otherwise, can you let us know what we can do to help?

Thanks.

> Allow join on any property using property-ref
> ---------------------------------------------
>
>                 Key: HHH-1829
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1829
>             Project: Hibernate Core
>          Issue Type: New Feature
>          Components: metamodel
>    Affects Versions: 3.2.0 cr1, 3.2.0.cr2
>            Reporter: Maarten Winkels
>            Assignee: Steve Ebersole
>         Attachments: AbstractJoinTest.java, HHH-1829-mwinkels.patch, hhh-1829.patch, JoinNoPropertyRefTest.java, JoinPropertyRefTest.java, Person.hbm.xml, Person.java, PersonNoPropertyRef.hbm.xml
>
>
> Currently joining tables for one class (uing the <join...> tag) is only supported for the id property. The property-ref is allowed on the <key..> tag inside the <join..> tag, but this is ignored.

-- 
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.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list