Добавьте к сущности свойство, которое не является столбцом и может содержать значение HTTP-запроса - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть сущность User, у которой столько свойств, сколько столбцов в базе данных и временный рядом с ней. Пользователь может быть частью Организации, которая является односторонними отношениями. В этом объекте тип данных является объектом организации.

Модель также используется в контроллере для проверки и хранения значений данных запроса, но этого нельзя достичь с помощью организации, поскольку пользователь передает имя в виде строки, а в сущности организация является объектом, как уже упоминалось. .

Итак, я хотел бы добавить другое свойство, которое может содержать имя организации, чтобы затем я мог преобразовать его в объект «Организация» в Сервисе. Но я не могу добавить обычное свойство, потому что Spring JPA будет считать, что это должен быть столбец, а также не может быть временным свойством, потому что оно игнорируется на стороне контроллера для запроса.

В настоящее время я достигаю этого, добавляя еще один параметр с @RequestParam(name="organisationname") и передавая его вместе с объектом User в Сервис, но у меня есть ощущение, что это неправильный путь.

Как я могу подойти к этому по-другому и в самой сущности пользователя?

1 Ответ

0 голосов
/ 05 ноября 2018

Ваш сериализатор JSON НЕ может игнорировать поля @Transient (мне нравится этот подход, так как переходный процесс является термином БД, поэтому он не должен влиять на вашу сериализацию JSON) - вы можете затем использовать @JsonIgnore, чтобы пропустить свойства сериализации JSON .

То есть @Transient игнорировать при взаимодействии с БД, @JsonIgnore игнорировать при сериализации / десериализации.

Если вы используете Jackson ObjectMapper, вы можете сделать следующее:

@Bean
public ObjectMapper objectMapper() {
    final ObjectMapper mapper = new ObjectMapper();
    final Hibernate5Module hibernate5Module = new Hibernate5Module();
    hibernate5Module.disable(Hibernate5Module.Feature.USE_TRANSIENT_ANNOTATION);
    mapper.registerModule(hibernate5Module);
    return mapper;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...