Hibernate, получить пользователя из списка OneToMany - PullRequest
0 голосов
/ 10 февраля 2020

Мне нужно написать метод, в котором будут возвращены все приложения, в которых пользователь отправляет свое приложение, т. Е. Те, в которых зарегистрированный в данный момент пользователь указан в списке applyBy.

ApplicationEntity

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "applied_by_id")
private List<UserEntity> appliedBy;

UserEntity

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "user_app_id")
private ApplicationEntity user_applications;

Кроме того, после извлечения информации из вышеприведенных привязок мне нужно проверить, что перечисление orderState является правильным, то есть DELIVERED или FINISHED.

Я пытаюсь сделать это следующим образом:

ApplicationRepository

@Query("SELECT a FROM ApplicationEntity a join a.appliedBy u where u.id = :userId")
public List<ApplicationEntity> getUserApplications(@Param("userId") UUID userId);

ApplicationService

List<ApplicationEntity> application = applicationRepository.getUserApplications(user.getId());

application.stream().allMatch(us -> us.equals(OrderState.DELIVERED) || us.equals(OrderState.FINISHED));

Но это не работает :( У кого-нибудь есть представление о том, как мы может вытащить пользователя из List <UserEntity> appliedBy?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

Вы можете использовать следующий запрос:

@Query("SELECT a FROM ApplicationEntity a WHERE a.appliedBy.id = :userID)

Вам не нужно объединение.

0 голосов
/ 10 февраля 2020

@ Query ("SELECT * FROM ApplicationEntity a, где a.applied_by_id =: # {# userId}", nativeQuery = true) Список getUserApplications (@Param ("userId") Long userId);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...