Hibernate Сохранить объект без одного столбца

У меня есть таблица с именем test, и в ней есть столбцы, такие как id, name, address. Я создал класс POJO (User) для всех трех столбцов, и то же самое было сопоставлено с конфигурацией hbm.

Вот мои вопросы, как я могу предотвратить один столбец при сохранении объекта пользователя в сеансе (session.save(User)).

Допустим, я не хочу сохранять свое поле адреса. Как я могу предотвратить. Есть ли какие-либо свойства в конфигурации HIbernate или какой-либо модификатор нужно добавить в POJO?

3 ответа

Решение

Сделайте это поле переходным.

Transient - объект является временным, если он только что был создан с использованием оператора new и не связан с Hibernate Session. Он не имеет постоянного представления в базе данных и не было присвоено значение идентификатора. Временные экземпляры будут уничтожены сборщиком мусора, если приложение больше не будет содержать ссылку. Используйте Hibernate Session, чтобы сделать объект постоянным (и пусть Hibernate позаботится о операторах SQL, которые должны быть выполнены для этого перехода).

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/objectstate.html

  • Если вы используете конфигурацию аннотаций, вы можете сделать следующее:

    import javax.persistence.Transient;
     ....
    Class User{
      @Transient
      private String address;
      ....
    
  • Если вы используете конфигурацию XML, просто избегайте создания сопоставления для правильной адресации в hibernate.cfg.xml файл. Несопоставленные свойства не сохраняются в спящем режиме.

Надеюсь это поможет.

Во избежание сохранения поля из сущности в БД можно использовать один из двух механизмов:

@Transient - аннотация JPA, помечающая поле как нестабильное

временное ключевое слово в Java. Осторожно - использование этого ключевого слова предотвратит использование поля с любым механизмом сериализации из Java. Итак, если поле должно быть сериализовано, вам лучше использовать аннотацию @Transient.

Другие вопросы по тегам