Часть спецификации JPA, опубликованная Паскалем Тивентом, выглядит довольно запутанно.На самом деле, Hibernate уважает transient
при использовании доступа к полю, но игнорирует в случае доступа к свойству.Возможно, это поведение, специфичное для Hibernate.
Например, в этом случае bar
не сериализуется, но сохраняется в базе данных:
@Entity
@Access(AccessType.FIELD) // Default access type - field
public class Foo {
@Id @GeneratedValue
private Long id;
transient private String bar;
...
@Access(AccessType.PROPERTY) // Override default access type for this property
public String getBar() { return bar; }
}
РЕДАКТИРОВАТЬ: Поскольку неясно, как это поведение соответствует спецификации JPA, возможно, лучшим выбором будет использование различных имен для поля transient
и соответствующего свойства.