- java.lang.Object
-
- io.github.mmm.entity.link.AbstractLink<E>
-
- io.github.mmm.entity.link.IdLink<E>
-
- Type Parameters:
E- the generic type of thelinkedentity.
- All Implemented Interfaces:
Link<E>
public class IdLink<E> extends AbstractLink<E>
Implementation ofLinkthat carries theIdof an entity. It optionally allows lazy loading on the first call ofgetTarget()via an externally given resolverFunction. This approach is easier, less invasive and more lightweight as using proxy objects for entities.- Since:
- 1.0.0
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Id<E>getId()EgetTarget()booleanisResolved()static <E> IdLink<E>of(Id<E> id, Function<Id<E>,E> resolver)IdLink<E>withType(Class<?> type)-
Methods inherited from class io.github.mmm.entity.link.AbstractLink
equals, hashCode, toString
-
-
-
-
Method Detail
-
getId
public Id<E> getId()
- Returns:
- the
unique identifierof the linkedbean. When creating newEntitiesa link may hold a transientEntityastargetthat has no ID assigned, yet. In such case this method will returnnull.
-
isResolved
public boolean isResolved()
- Returns:
trueif thelink targetis already resolved,falseotherwise (ifLink.getTarget()may trigger lazy loading and could also fail if called without an open transaction).
-
getTarget
public E getTarget()
Description copied from interface:LinkThis method resolves the linked entity.
ATTENTION:
ALinkcan be evaluated lazily. In such case the first call of this method will resolve the linked entity from the database. That can be a relatively expensive operation and requires an open transaction. UseLink.isResolved()to distinguish and prevent undesired link resolving.
Further, after serialization (e.g. mapping to JSON and back) maybe only theIDwas transferred and this link can not be resolved. In that case this method may returnnull. Please note thatidandtargetcan not both be null. In case a link property is empty it will containnullinstead of an emptyLinkso you can always properly distinguish the scenarios.- Returns:
- the link target or
nullif the link can not be resolved.
-
withType
public IdLink<E> withType(Class<?> type)
- Parameters:
type- the new value ofId.getType(). Exact type should actually beClass<E> but this prevents simple usage.- Returns:
- a copy of this
Linkwith the giventypeor thisLinkitself if already satisfying. - See Also:
Id.withType(Class)
-
-