diff --git a/hibernate-core/src/main/java/org/hibernate/event/spi/LoadEvent.java b/hibernate-core/src/main/java/org/hibernate/event/spi/LoadEvent.java index e85ba703c64a..70b209b7d413 100644 --- a/hibernate-core/src/main/java/org/hibernate/event/spi/LoadEvent.java +++ b/hibernate-core/src/main/java/org/hibernate/event/spi/LoadEvent.java @@ -4,6 +4,7 @@ */ package org.hibernate.event.spi; +import org.hibernate.Internal; import org.hibernate.LockMode; import org.hibernate.LockOptions; import org.hibernate.Locking; @@ -66,32 +67,36 @@ private LoadEvent( boolean isAssociationFetch, EventSource source, Boolean readOnly) { - super( source ); + this.entityId = entityId; + this.entityClassName = entityClassName; + this.instanceToLoad = instanceToLoad; + this.lockOptions = lockOptions; + this.isAssociationFetch = isAssociationFetch; + this.readOnly = readOnly; + validate(); + } + @Internal + public void validate() { if ( entityId == null ) { - throw new IllegalArgumentException( "id to load is required for loading" ); + throw new IllegalArgumentException( "Identifier may not be null" ); } - if ( lockOptions.getLockMode() == LockMode.WRITE ) { - throw new IllegalArgumentException("Invalid lock mode for loading"); + final var lockMode = lockOptions.getLockMode(); + if ( lockMode == LockMode.WRITE ) { + throw new IllegalArgumentException( "Invalid lock mode: " + LockMode.WRITE ); } - else if ( lockOptions.getLockMode() == null ) { + else if ( lockMode == null ) { lockOptions.setLockMode( LockMode.NONE ); } - - this.entityId = entityId; - this.entityClassName = entityClassName; - this.instanceToLoad = instanceToLoad; - this.lockOptions = lockOptions; - this.isAssociationFetch = isAssociationFetch; - this.readOnly = readOnly; } public Object getEntityId() { return entityId; } + @Internal public void setEntityId(Object entityId) { this.entityId = entityId; } @@ -100,6 +105,7 @@ public String getEntityClassName() { return entityClassName; } + @Internal public void setEntityClassName(String entityClassName) { this.entityClassName = entityClassName; } @@ -108,6 +114,7 @@ public boolean isAssociationFetch() { return isAssociationFetch; } + @Internal public void setAssociationFetch(boolean associationFetch) { isAssociationFetch = associationFetch; } @@ -116,6 +123,7 @@ public Object getInstanceToLoad() { return instanceToLoad; } + @Internal public void setInstanceToLoad(Object instanceToLoad) { this.instanceToLoad = instanceToLoad; } @@ -124,6 +132,7 @@ public LockOptions getLockOptions() { return lockOptions; } + @Internal public void setLockOptions(LockOptions lockOptions) { this.lockOptions = lockOptions; } @@ -140,12 +149,11 @@ public Boolean getReadOnly() { return readOnly; } + @Internal public void setReadOnly(Boolean readOnly) { this.readOnly = readOnly; } - - /** * @deprecated Use {@linkplain #getLockOptions()} instead. */ diff --git a/hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java b/hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java index a37ec581e42c..232f193263c5 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java @@ -1128,6 +1128,7 @@ protected LoadEvent makeLoadEvent(String entityName, Object id, Boolean readOnly event.setReadOnly( readOnly ); event.setLockOptions( lockOptions ); event.setAssociationFetch( false ); + event.validate(); return event; } }