Как запросить таблицу в сущности в Hibernate? - PullRequest
0 голосов
/ 03 ноября 2019

Это для REST API, так как это связано с упрощением использования JSON POST. У меня есть две сущности, Клиент и Роль. Для простоты:

Customer: Long id, String name, List<Role>
Role: Long id, String name -- this is a static system table I populate i.e. "User", "Admin"

Внутренне я делаю целые отношения многие ко многим, но я не хочу показывать role.ids в json, поэтому я делаю обертку скарта, в которой я получаю:

"роли": ["Пользователь", "Администратор"]

Пока все хорошо. GET работают точно так, как я хочу.

Теперь я пытаюсь реализовать POST. В этом случае мне нужно взять массив «role» и преобразовать его обратно во внутренний список.

Я могу сделать это с помощью:

    this.roles = roles.stream().map(role -> { return new Role(0L, role); })
                               .collect(Collectors.toList());

Это также отлично работает. За исключением roleId все 0 очевидно. Моя идея состояла в том, чтобы создать RoleRepository и автоматически связать его внутри сущности Customer, чтобы я мог запросить таблицу ролей по имени, чтобы получить идентификатор. Но это приводит к возникновению исключения, так как он не может создать объект RoleRepository внутри Customer, который находится в CustomerRepository.

Попытка выяснить, как заполнять здесь roleIds. В качестве дополнительного вопроса:

У меня есть CustomerController. Это просто перенаправляет запрос на создание в CustomerService. Если я автоматически подключаю RoleRepository в CustomerService, он работает нормально, но я не думаю, что сервисы обязаны заполнять идентификаторы, не так ли? Кажется, что Customer должен заполнить их, когда вызывается setRoles (), нет? В противном случае объект Customer будет удерживать недопустимое состояние до тех пор, пока он не будет сохранен, тогда как, если я сделаю это для клиента, он всегда будет в допустимом состоянии.

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