HHH-10956 an exception has to thrown when the composite key is an association and its value is null
This commit is contained in:
parent
114e16f64f
commit
2db3ce2643
|
@ -39,6 +39,7 @@ import org.hibernate.proxy.ProxyFactory;
|
||||||
import org.hibernate.tuple.IdentifierProperty;
|
import org.hibernate.tuple.IdentifierProperty;
|
||||||
import org.hibernate.tuple.Instantiator;
|
import org.hibernate.tuple.Instantiator;
|
||||||
import org.hibernate.type.AssociationType;
|
import org.hibernate.type.AssociationType;
|
||||||
|
import org.hibernate.type.BasicType;
|
||||||
import org.hibernate.type.ComponentType;
|
import org.hibernate.type.ComponentType;
|
||||||
import org.hibernate.type.CompositeType;
|
import org.hibernate.type.CompositeType;
|
||||||
import org.hibernate.type.EntityType;
|
import org.hibernate.type.EntityType;
|
||||||
|
@ -371,24 +372,23 @@ public abstract class AbstractEntityTuplizer implements EntityTuplizer {
|
||||||
final Type[] copierSubTypes = mappedIdentifierType.getSubtypes();
|
final Type[] copierSubTypes = mappedIdentifierType.getSubtypes();
|
||||||
final int length = subTypes.length;
|
final int length = subTypes.length;
|
||||||
for ( int i = 0; i < length; i++ ) {
|
for ( int i = 0; i < length; i++ ) {
|
||||||
|
final Type subType = subTypes[i];
|
||||||
if ( propertyValues[i] == null ) {
|
if ( propertyValues[i] == null ) {
|
||||||
try {
|
if ( subType.isAssociationType() ) {
|
||||||
final String name = names[i];
|
throw new HibernateException( "No part of a composite identifier may be null" );
|
||||||
final Property p = ((Component) identifier).getProperty(name);
|
|
||||||
final SimpleValue v = (SimpleValue) p.getValue();
|
|
||||||
if ( v.getIdentifierGenerator() == null ) {
|
|
||||||
throw new NullPointerException("No IdentifierGenerator found for property "+name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Throwable t) {
|
final String name = names[i];
|
||||||
throw new HibernateException( "No part of a composite identifier may be null", t );
|
final Property p = ( (Component) identifier ).getProperty( name );
|
||||||
|
final SimpleValue v = (SimpleValue) p.getValue();
|
||||||
|
if ( v.getIdentifierGenerator() == null ) {
|
||||||
|
throw new HibernateException( "No part of a composite identifier may be null" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//JPA 2 @MapsId + @IdClass points to the pk of the entity
|
//JPA 2 @MapsId + @IdClass points to the pk of the entity
|
||||||
if ( subTypes[i].isAssociationType() && !copierSubTypes[i].isAssociationType() ) {
|
if ( subType.isAssociationType() && !copierSubTypes[i].isAssociationType() ) {
|
||||||
propertyValues[i] = determineEntityId(
|
propertyValues[i] = determineEntityId(
|
||||||
propertyValues[i],
|
propertyValues[i],
|
||||||
(AssociationType) subTypes[i],
|
(AssociationType) subType,
|
||||||
session,
|
session,
|
||||||
sessionFactory
|
sessionFactory
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue