HHH-4712 - Fix identifier column mappings when entities use non-identifier properties named id.
This commit is contained in:
parent
1f090f3731
commit
f26488bc85
|
@ -341,14 +341,7 @@ public class FromElement extends HqlSqlWalkerNode implements DisplayableNode, Pa
|
||||||
throw new IllegalStateException( "No table alias for node " + this );
|
throw new IllegalStateException( "No table alias for node " + this );
|
||||||
}
|
}
|
||||||
|
|
||||||
final String propertyName;
|
final String propertyName = getIdentifierPropertyName();
|
||||||
if ( getEntityPersister() != null && getEntityPersister().getEntityMetamodel() != null
|
|
||||||
&& getEntityPersister().getEntityMetamodel().hasNonIdentifierPropertyNamedId() ) {
|
|
||||||
propertyName = getEntityPersister().getIdentifierPropertyName();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
propertyName = EntityPersister.ENTITY_ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( getWalker().getStatementType() == HqlSqlTokenTypes.SELECT ) {
|
if ( getWalker().getStatementType() == HqlSqlTokenTypes.SELECT ) {
|
||||||
return getPropertyMapping( propertyName ).toColumns( table, propertyName );
|
return getPropertyMapping( propertyName ).toColumns( table, propertyName );
|
||||||
|
@ -536,6 +529,10 @@ public class FromElement extends HqlSqlWalkerNode implements DisplayableNode, Pa
|
||||||
return elementType.getCollectionPropertyReference( propertyName );
|
return elementType.getCollectionPropertyReference( propertyName );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getIdentifierPropertyName() {
|
||||||
|
return elementType.getIdentifierPropertyName();
|
||||||
|
}
|
||||||
|
|
||||||
public void setFetch(boolean fetch) {
|
public void setFetch(boolean fetch) {
|
||||||
this.fetch = fetch;
|
this.fetch = fetch;
|
||||||
// Fetch can't be used with scroll() or iterate().
|
// Fetch can't be used with scroll() or iterate().
|
||||||
|
|
|
@ -129,10 +129,10 @@ class FromElementType {
|
||||||
*/
|
*/
|
||||||
String renderScalarIdentifierSelect(int i) {
|
String renderScalarIdentifierSelect(int i) {
|
||||||
checkInitialized();
|
checkInitialized();
|
||||||
String[] cols = getPropertyMapping( EntityPersister.ENTITY_ID ).toColumns(
|
|
||||||
getTableAlias(),
|
final String idPropertyName = getIdentifierPropertyName();
|
||||||
EntityPersister.ENTITY_ID
|
String[] cols = getPropertyMapping( idPropertyName ).toColumns( getTableAlias(), idPropertyName );
|
||||||
);
|
|
||||||
StringBuilder buf = new StringBuilder();
|
StringBuilder buf = new StringBuilder();
|
||||||
// For property references generate <tablealias>.<columnname> as <projectionalias>
|
// For property references generate <tablealias>.<columnname> as <projectionalias>
|
||||||
for ( int j = 0; j < cols.length; j++ ) {
|
for ( int j = 0; j < cols.length; j++ ) {
|
||||||
|
@ -677,4 +677,14 @@ class FromElementType {
|
||||||
return queryableCollection.toColumns( propertyName );
|
return queryableCollection.toColumns( propertyName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getIdentifierPropertyName() {
|
||||||
|
if ( getEntityPersister() != null && getEntityPersister().getEntityMetamodel() != null
|
||||||
|
&& getEntityPersister().getEntityMetamodel().hasNonIdentifierPropertyNamedId() ) {
|
||||||
|
return getEntityPersister().getIdentifierPropertyName();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return EntityPersister.ENTITY_ID;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue