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.