mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-17 00:24:57 +00:00
HHH-15201 Composite ID with dynamic-map entities fails with an exception
This commit is contained in:
parent
03410ac24e
commit
aa6bb1481c
@ -8,6 +8,8 @@
|
||||
|
||||
import org.hibernate.engine.spi.IdentifierValue;
|
||||
import org.hibernate.engine.spi.SharedSessionContractImplementor;
|
||||
import org.hibernate.persister.entity.EntityPersister;
|
||||
|
||||
|
||||
/**
|
||||
* Describes the mapping of an entity's identifier.
|
||||
@ -41,7 +43,15 @@ default String getPartName() {
|
||||
|
||||
Object getIdentifier(Object entity);
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #setIdentifier(Object, Object, EntityPersister, SharedSessionContractImplementor)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
void setIdentifier(Object entity, Object id, SharedSessionContractImplementor session);
|
||||
|
||||
default void setIdentifier(Object entity, Object id, EntityPersister entityDescriptor, SharedSessionContractImplementor session){
|
||||
setIdentifier( entity, id, session );
|
||||
}
|
||||
|
||||
Object instantiate();
|
||||
}
|
||||
|
@ -236,12 +236,16 @@ else if ( attributeMapping instanceof ToOneAttributeMapping
|
||||
|
||||
@Override
|
||||
public void setIdentifier(Object entity, Object id, SharedSessionContractImplementor session) {
|
||||
final List<AttributeMapping> mappedIdAttributeMappings = identifierValueMapper.getAttributeMappings();
|
||||
final Object[] propertyValues = new Object[mappedIdAttributeMappings.size()];
|
||||
final SessionFactoryImplementor factory = session.getFactory();
|
||||
final EntityPersister entityDescriptor = factory.getRuntimeMetamodels()
|
||||
final EntityPersister entityDescriptor = session.getFactory().getRuntimeMetamodels()
|
||||
.getMappingMetamodel()
|
||||
.getEntityDescriptor( entity.getClass() );
|
||||
setIdentifier( entity, id, entityDescriptor, session );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifier(Object entity, Object id, EntityPersister entityDescriptor, SharedSessionContractImplementor session) {
|
||||
final List<AttributeMapping> mappedIdAttributeMappings = identifierValueMapper.getAttributeMappings();
|
||||
final Object[] propertyValues = new Object[mappedIdAttributeMappings.size()];
|
||||
|
||||
getEmbeddableTypeDescriptor().forEachAttributeMapping(
|
||||
(position, attribute) -> {
|
||||
|
@ -256,12 +256,16 @@ else if ( attributeMapping instanceof ToOneAttributeMapping
|
||||
|
||||
@Override
|
||||
public void setIdentifier(Object entity, Object id, SharedSessionContractImplementor session) {
|
||||
final List<AttributeMapping> mappedIdAttributeMappings = identifierValueMapper.getAttributeMappings();
|
||||
final Object[] propertyValues = new Object[mappedIdAttributeMappings.size()];
|
||||
final SessionFactoryImplementor factory = session.getFactory();
|
||||
final EntityPersister entityDescriptor = factory.getRuntimeMetamodels()
|
||||
final EntityPersister entityDescriptor = session.getFactory().getRuntimeMetamodels()
|
||||
.getMappingMetamodel()
|
||||
.getEntityDescriptor( entity.getClass() );
|
||||
setIdentifier( entity, id, entityDescriptor, session );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifier(Object entity, Object id, EntityPersister entityDescriptor, SharedSessionContractImplementor session) {
|
||||
final List<AttributeMapping> mappedIdAttributeMappings = identifierValueMapper.getAttributeMappings();
|
||||
final Object[] propertyValues = new Object[mappedIdAttributeMappings.size()];
|
||||
|
||||
getEmbeddableTypeDescriptor().forEachAttributeMapping(
|
||||
(position, attribute) -> {
|
||||
|
@ -5191,7 +5191,7 @@ public Object getIdentifier(Object entity, SharedSessionContractImplementor sess
|
||||
|
||||
@Override
|
||||
public void setIdentifier(Object entity, Object id, SharedSessionContractImplementor session) {
|
||||
identifierMapping.setIdentifier( entity, id, session );
|
||||
identifierMapping.setIdentifier( entity, id, this, session );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
x
Reference in New Issue
Block a user