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

Daljeet Singh Sarna (JIRA) noreply at atlassian.com
Fri Feb 2 10:55:42 EST 2007


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1829?page=comments#action_25978 ] 

Daljeet Singh Sarna commented on HHH-1829:
------------------------------------------

I tried using the patch you provided. 

But I found that it would still fail and then further debugging I found adding following lines to "src/org/hibernate/persister/entity/AbstractEntityPersister.java" will fix the issue.

you have suggested one change in the method below. but it seems that "join.addJoin("  inside for loop - > if look also requires update.


protected JoinFragment createJoin(String name, boolean innerJoin, boolean includeSubclasses) {
		//final String[] idCols = StringHelper.qualify( name, getIdentifierColumnNames() ); //all joins join to the pk of the driving table
		final String[] idCols = getPropertyRefColumnNames() != null &&
				getPropertyRefColumnNames().length > 0 &&
																	getPropertyRefColumnNames()[0] != null ?
				StringHelper.qualify( name, getPropertyRefColumnNames() ) :
				StringHelper.qualify( name, getIdentifierColumnNames() ); //all joins join to the pk of the driving table
		final JoinFragment join = getFactory().getDialect().createOuterJoinFragment();
		final int tableSpan = getSubclassTableSpan();
		for ( int j = 1; j < tableSpan; j++ ) { //notice that we skip the first table; it is the driving table!
			final boolean joinIsIncluded = isClassOrSuperclassTable( j ) ||
					( includeSubclasses && !isSubclassTableSequentialSelect( j ) && !isSubclassTableLazy( j ) );
			if ( joinIsIncluded ) {
				join.addJoin( getSubclassTableName( j ),
						generateTableAlias( name, j ),
						(getPropertyRefColumnNames() != null
						        && getPropertyRefColumnNames().length > 0
                        		&& getPropertyRefColumnNames()[0] != null )
                         ? new String[]{idCols[j-1]}
                         : idCols,
						//idCols,
						getSubclassTableKeyColumns( j ),
						innerJoin && isClassOrSuperclassTable( j ) && !isInverseTable( j ) && !isNullableTable( j ) ?
						JoinFragment.INNER_JOIN : //we can inner join to superclass tables (the row MUST be there)
						JoinFragment.LEFT_OUTER_JOIN //we can never inner join to subclass tables
					);
			}
		}
		return join;
	}

> Allow join on any property using property-ref
> ---------------------------------------------
>
>          Key: HHH-1829
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1829
>      Project: Hibernate3
>         Type: New Feature

>   Components: core
>     Versions: 3.2.0 cr1, 3.2.0.cr2
>     Reporter: Maarten Winkels
>     Assignee: Steve Ebersole
>      Fix For: 3.2.3
>  Attachments: AbstractJoinTest.java, JoinNoPropertyRefTest.java, JoinPropertyRefTest.java, Person.hbm.xml, Person.java, PersonNoPropertyRef.hbm.xml, hhh-1829.patch
>
>
> 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