static <ID,F extends Fetcher<?,?,?>,R> Map<ID,List<F>> |
JoinUtil.joinOneToMany(Supplier<Collection<R>> joinRightSide,
Function<? super R,? extends F> fetcherConstructor,
Function<? super R,? extends ID> getLeftSideIdFromRightSide) |
|
static <ID,F extends Fetcher<?,?,?>,R,C extends Collection<F>> Map<ID,C> |
JoinUtil.joinOneToMany(Supplier<Collection<R>> innerJoinRightSide,
Function<? super R,? extends F> fetcherConstructor,
Function<? super R,? extends ID> getLeftSideIdFromRightSide,
Supplier<? extends C> targetCollectionSupplier) |
Для двусторонних отношений типа OneToMany, когда leftSide не является владельцем отношения
(в терминах JPA это означает, что на leftSide объявлено OneToMany(mappedBy = "..."),
а на правой стороне JoinColumn)
|
static <ID,F extends Fetcher<?,?,?>,R> Map<ID,F> |
JoinUtil.joinOneToOne(Supplier<Collection<R>> fetchRightSide,
Function<? super R,? extends F> fetcherConstructor,
Function<? super R,? extends ID> getLeftSideIdFromRightSide) |
Метод для двусторонних отношений типа OneToOne, когда левая сторона отношения не является его владельцем
(в терминах JPA это означает, что на leftSide отсутствует JoinColumn).
В действительности для JPA этот метод (как и отношение данного типа) имеет малое практическое значение,
так как при двустороннем отношении OneToOne правая сторона не может быть LAZY
(то есть при загрузке левой стороны отношения используя репозиторий или EntityManager
правая сторона так же всегда будет подгружаться, создавая проблему N+1).
Если только не используется инструментация байт-кода:
Ссылка
|
static <ID,F extends Fetcher<?,?,?>,L,R> Map<ID,List<F>> |
JoinUtil.joinToMany(Supplier<Set<L>> innerJoin,
Function<? super R,? extends F> fetcherConstructor,
Function<? super L,? extends ID> getLeftSideId,
Function<? super L,Collection<R>> getRightSideByLeftSide) |
|
static <ID,F extends Fetcher<?,?,?>,L,R,C extends Collection<F>> Map<ID,C> |
JoinUtil.joinToMany(Supplier<Set<L>> innerJoinRightSide,
Function<? super R,? extends F> fetcherConstructor,
Function<? super L,? extends ID> getLeftSideId,
Function<? super L,Collection<R>> getRightSideByLeftSide,
Supplier<? extends C> targetCollectionSupplier) |
Для общего типа отношений ToMany (unidirectional/bidirectional, OneToMany/ManyToMany).
|
static <LID,RID,F extends Fetcher<?,?,?>,L,R> Map<LID,F> |
JoinUtil.joinToOne(Collection<L> leftSide,
Supplier<Collection<R>> fetchRightSide,
Function<? super R,? extends F> fetcherConstructor,
Function<? super L,? extends LID> getLeftSideId,
Function<? super L,? extends RID> getForeignKey,
Function<? super R,? extends RID> getRightSideId) |
Для отношений типа ToOne, когда leftSide является владельцем отношения
(в терминах JPA это означает, что на leftSide объявлен JoinColumn)
|
static <ID,F extends Fetcher<?,?,?>,L,R> Map<ID,F> |
JoinUtil.joinToOnePrefetching(Collection<L> leftSide,
Runnable prefetchRightSide,
Function<? super R,? extends F> fetcherConstructor,
Function<? super L,? extends R> getOtherSideFromLeftSide,
Function<? super L,? extends ID> getLeftSideId) |
Метод для отношений типа ToOne, когда leftSide является владельцем отношения.
|