Извлечение данных через Hibernate без передачи первичного ключа - PullRequest
0 голосов
/ 14 мая 2018

Я использую составной первичный ключ, который определен в классе сущностей как:

@EmbeddedId
private ParticipantPrimaryKey pKey;

, а первичный ключ состоит из идентификатора события и студенческого идентификатора, которые определены в классе сущности PrimaryKey.

Теперь мне нужно выбрать участников из таблицы, которые участвуют в каком-либо конкретном событии.

HQL-запрос, который не работает из-за вышеуказанной проблемы:

select pe from ParticipantEntity pe where pe.eventId=?

Если я используюлюбое другое поле будет работать, так как они присутствуют в классе сущностей, но в первичном ключе есть идентификатор события.

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете использовать @ClassId, как :

 @ClassId(ParticipantPrimaryKey.class)
 class ParticipantEntity { ...

Удалить из ParticipantEntity:

@EmbeddedId
private ParticipantPrimaryKey pKey;

А также в ParticipantEntity добавьте две клавиши:

@Id
private Long eventId;

@Id
private Long studentId;

После этого вы можете просто:

SELECT pe FROM ParticipantEntity pe where pe.eventId = :eventId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...