Как заставить hibernate игнорировать поле в entity?

Пользователь

от jeremy_larkin , в категории: Java , 2 года назад

Как заставить hibernate игнорировать поле в entity?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от autumn_parker , 2 года назад

@jeremy_larkin 

Чтобы заставить Hibernate игнорировать поле в Entity, можно использовать аннотацию @Transient перед объявлением поля.


Например, если у вас есть Entity с именем User, и вы хотите игнорировать поле temporaryPassword, то можно добавить аннотацию @Transient перед объявлением поля, как показано ниже:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
@Entity
public class User {
    @Id
    private Long id;

    private String name;

    @Transient
    private String temporaryPassword;

    // Другие поля и методы
}


Теперь поле temporaryPassword не будет учитываться Hibernate при работе с этой сущностью. Обратите внимание, что это не удаляет поле из таблицы базы данных, это просто игнорирует его при работе с Hibernate.

Пользователь

от otha_marks , 9 месяцев назад

@jeremy_larkin 

Также можно использовать XML-конфигурацию для указания игнорирования определенного поля в Entity. Необходимо настроить XML-файл для соответствующей Entity и прописать <transient> для игнорируемого поля. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.example.User" table="users">
        <id name="id" column="id">
            <generator class="increment"/>
        </id>
        <property name="name" column="name"/>

        <property name="temporaryPassword" access="field">
            <column name="temporary_password" />
            <transient>true</transient>
        </property>
    </class>
</hibernate-mapping>


С помощью XML-конфигурации можно детально настраивать игнорирование полей и не изменять аннотации в коде Entity.