HHH-9339 - java.lang.Optional support
This commit is contained in:
parent
aa9e1f0baf
commit
bdff7ab169
|
@ -6,6 +6,9 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate;
|
package org.hibernate;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads an entity by its natural identifier.
|
* Loads an entity by its natural identifier.
|
||||||
*
|
*
|
||||||
|
@ -22,7 +25,7 @@ public interface NaturalIdLoadAccess<T> {
|
||||||
*
|
*
|
||||||
* @return {@code this}, for method chaining
|
* @return {@code this}, for method chaining
|
||||||
*/
|
*/
|
||||||
public NaturalIdLoadAccess<T> with(LockOptions lockOptions);
|
NaturalIdLoadAccess<T> with(LockOptions lockOptions);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a NaturalId attribute value.
|
* Add a NaturalId attribute value.
|
||||||
|
@ -32,7 +35,7 @@ public interface NaturalIdLoadAccess<T> {
|
||||||
*
|
*
|
||||||
* @return {@code this}, for method chaining
|
* @return {@code this}, for method chaining
|
||||||
*/
|
*/
|
||||||
public NaturalIdLoadAccess<T> using(String attributeName, Object value);
|
NaturalIdLoadAccess<T> using(String attributeName, Object value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For entities with mutable natural ids, should Hibernate perform "synchronization" prior to performing
|
* For entities with mutable natural ids, should Hibernate perform "synchronization" prior to performing
|
||||||
|
@ -50,7 +53,7 @@ public interface NaturalIdLoadAccess<T> {
|
||||||
*
|
*
|
||||||
* @return {@code this}, for method chaining
|
* @return {@code this}, for method chaining
|
||||||
*/
|
*/
|
||||||
public NaturalIdLoadAccess<T> setSynchronizationEnabled(boolean enabled);
|
NaturalIdLoadAccess<T> setSynchronizationEnabled(boolean enabled);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the persistent instance with the natural id value(s) defined by the call(s) to {@link #using}. This
|
* Return the persistent instance with the natural id value(s) defined by the call(s) to {@link #using}. This
|
||||||
|
@ -62,7 +65,7 @@ public interface NaturalIdLoadAccess<T> {
|
||||||
*
|
*
|
||||||
* @return the persistent instance or proxy
|
* @return the persistent instance or proxy
|
||||||
*/
|
*/
|
||||||
public T getReference();
|
T getReference();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the persistent instance with the natural id value(s) defined by the call(s) to {@link #using}, or
|
* Return the persistent instance with the natural id value(s) defined by the call(s) to {@link #using}, or
|
||||||
|
@ -71,6 +74,14 @@ public interface NaturalIdLoadAccess<T> {
|
||||||
*
|
*
|
||||||
* @return The persistent instance or {@code null}
|
* @return The persistent instance or {@code null}
|
||||||
*/
|
*/
|
||||||
public T load();
|
T load();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Same semantic as {@link #load} except that here {@link Optional} is returned to
|
||||||
|
* handle nullability.
|
||||||
|
*
|
||||||
|
* @return The persistent instance, if one, wrapped in Optional
|
||||||
|
*/
|
||||||
|
Optional<T> loadOptional();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate;
|
package org.hibernate;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads an entity by its natural identifier.
|
* Loads an entity by its natural identifier.
|
||||||
*
|
*
|
||||||
|
@ -23,7 +26,7 @@ public interface SimpleNaturalIdLoadAccess<T> {
|
||||||
*
|
*
|
||||||
* @return {@code this}, for method chaining
|
* @return {@code this}, for method chaining
|
||||||
*/
|
*/
|
||||||
public SimpleNaturalIdLoadAccess<T> with(LockOptions lockOptions);
|
SimpleNaturalIdLoadAccess<T> with(LockOptions lockOptions);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For entities with mutable natural ids, should Hibernate perform "synchronization" prior to performing
|
* For entities with mutable natural ids, should Hibernate perform "synchronization" prior to performing
|
||||||
|
@ -36,7 +39,7 @@ public interface SimpleNaturalIdLoadAccess<T> {
|
||||||
*
|
*
|
||||||
* @return {@code this}, for method chaining
|
* @return {@code this}, for method chaining
|
||||||
*/
|
*/
|
||||||
public SimpleNaturalIdLoadAccess<T> setSynchronizationEnabled(boolean enabled);
|
SimpleNaturalIdLoadAccess<T> setSynchronizationEnabled(boolean enabled);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the persistent instance with the given natural id value, assuming that the instance exists. This method
|
* Return the persistent instance with the given natural id value, assuming that the instance exists. This method
|
||||||
|
@ -50,7 +53,7 @@ public interface SimpleNaturalIdLoadAccess<T> {
|
||||||
*
|
*
|
||||||
* @return The persistent instance or proxy, if an instance exists. Otherwise, {@code null}.
|
* @return The persistent instance or proxy, if an instance exists. Otherwise, {@code null}.
|
||||||
*/
|
*/
|
||||||
public T getReference(Object naturalIdValue);
|
T getReference(Object naturalIdValue);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the persistent instance with the given natural id value, or {@code null} if there is no such persistent
|
* Return the persistent instance with the given natural id value, or {@code null} if there is no such persistent
|
||||||
|
@ -61,6 +64,15 @@ public interface SimpleNaturalIdLoadAccess<T> {
|
||||||
*
|
*
|
||||||
* @return The persistent instance or {@code null}
|
* @return The persistent instance or {@code null}
|
||||||
*/
|
*/
|
||||||
public T load(Object naturalIdValue);
|
T load(Object naturalIdValue);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Same semantic as {@link #load} except that here {@link Optional} is returned to
|
||||||
|
* handle nullability.
|
||||||
|
*
|
||||||
|
* @param naturalIdValue The identifier
|
||||||
|
*
|
||||||
|
* @return The persistent instance, if one, wrapped in Optional
|
||||||
|
*/
|
||||||
|
Optional<T> loadOptional(Serializable naturalIdValue);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3028,14 +3028,16 @@ public final class SessionImpl
|
||||||
try {
|
try {
|
||||||
return (T) this.getIdentifierLoadAccess().load( entityId );
|
return (T) this.getIdentifierLoadAccess().load( entityId );
|
||||||
}
|
}
|
||||||
catch (EntityNotFoundException enf) {
|
catch (EntityNotFoundException | ObjectNotFoundException enf) {
|
||||||
// OK
|
|
||||||
}
|
|
||||||
catch (ObjectNotFoundException nf) {
|
|
||||||
// OK
|
// OK
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<T> loadOptional() {
|
||||||
|
return Optional.ofNullable( load() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SimpleNaturalIdLoadAccessImpl<T> extends BaseNaturalIdLoadAccessImpl<T>
|
private class SimpleNaturalIdLoadAccessImpl<T> extends BaseNaturalIdLoadAccessImpl<T>
|
||||||
|
@ -3106,6 +3108,11 @@ public final class SessionImpl
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<T> loadOptional(Serializable naturalIdValue) {
|
||||||
|
return Optional.ofNullable( load( naturalIdValue ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue