diff --git a/hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java b/hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java index b26a71c195..9d9852ea10 100644 --- a/hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java +++ b/hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java @@ -105,6 +105,7 @@ import org.hibernate.generator.internal.VersionGeneration; import org.hibernate.graph.spi.RootGraphImplementor; import org.hibernate.id.Assigned; import org.hibernate.id.BulkInsertionCapableIdentifierGenerator; +import org.hibernate.id.ForeignGenerator; import org.hibernate.id.IdentifierGenerator; import org.hibernate.id.OptimizableGenerator; import org.hibernate.id.PostInsertIdentityPersister; @@ -3924,13 +3925,16 @@ public abstract class AbstractEntityPersister return false; } } - final Boolean unsaved = identifierMapping.getUnsavedStrategy().isUnsaved( id ); - if ( unsaved != null && !unsaved ) { - throw new PropertyValueException( - "Detached entity with generated id '" + id + "' has an uninitialized version value '" + version + "'", - getEntityName(), - getVersionColumnName() - ); + final Generator identifierGenerator = getGenerator(); + if ( identifierGenerator != null && !( identifierGenerator instanceof ForeignGenerator ) ) { + final Boolean unsaved = identifierMapping.getUnsavedStrategy().isUnsaved( id ); + if ( unsaved != null && !unsaved ) { + throw new PropertyValueException( + "Detached entity with generated id '" + id + "' has an uninitialized version value '" + version + "'", + getEntityName(), + getVersionColumnName() + ); + } } } return isUnsaved;