Ответ
В JPA/Hibernate не существует аннотации для исключения всего класса из маппинга. Класс становится сущностью только если он помечен аннотацией @Entity. Если аннотация @Entity отсутствует — класс автоматически игнорируется persistence-провайдером (Hibernate).
Важные уточнения:
-
@Transient— НЕ для классов. Эта аннотация применяется только к полям или свойствам внутри класса-сущности, чтобы исключить их из маппинга в колонку БД.@Entity public class User { @Id private Long id; private String name; @Transient // Это поле НЕ будет сохранено в БД private String temporaryToken; } -
javax.persistence.Transientvsjava.beans.Transient. Для JPA всегда используйтеjavax.persistence.Transient.java.beans.Transientпредназначен для механизмов сериализации и JPA его игнорирует. -
Исключение класса из сканирования сущностей. Если класс ошибочно помечен
@Entity, но его нужно проигнорировать, это настраивается на уровне конфигурации сканирования пакетов вpersistence.xmlили свойствах Spring (@EntityScan).
Правильный подход:
- Чтобы класс не был сущностью — просто не ставьте
@Entity. - Чтобы исключить поле сущности — используйте
@Transient. - Чтобы временно отключить сущность — используйте настройки сканирования пакетов или профили (например, в Spring).