В объекте JPA вы можете аннотировать поля или методы (геттеры). Это диктует аннотация @Id
, то есть если вы поместите @Id
в поле, то все ваши аннотации должны быть на полях, но если вы поместите его, например, @Id Long getId()
, то должны последовать другие аннотации. Вот почему @Transient
тоже может быть в методе.
Например, если у вас есть это
@Id
private Long id;
@Transient
private String someTransientField;
private Long getId() {
return this.id;
}
private String getSomeTransientField() {
return this.someTransientField;
}
тогда someTransientField
будет считаться временным. Но если @Id
останется в поле, а вы переместите @Transient
в private String getSomeTransientField()
, тогда someTransientField
будет рассматриваться как постоянное, поскольку @Id
находится в поле, и, следовательно, ожидается, что все остальные аннотации также будут в полях.
Таким образом, случай, когда @Transient
будет работать над методом, таков:
private Long id;
private String someTransientField;
@Id
private Long getId() {
return this.id;
}
@Transient
private String getSomeTransientField() {
return this.someTransientField;
}
person
Predrag Maric
schedule
26.07.2016