有没有人能举个例子解释为什么JPA中的@Transient注释也有@Targetmethod?
我指的是文档http://docs.oracle.com/javaee/5/api/javax/persistence/Transient.html
@Target(value={METHOD,FIELD})
提前感谢!
有没有人能举个例子解释为什么JPA中的@Transient注释也有@Targetmethod?
我指的是文档http://docs.oracle.com/javaee/5/api/javax/persistence/Transient.html
@Target(value={METHOD,FIELD})
提前感谢!
@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;
}
@Id
保留在字段上,并将@Transient
移到private String getSomeTransientField()
上,则会将someTransientField
视为持久化,因为@Id
在字段上,因此预期所有其他注释也应放在字段上。如果将@Transient
放在字段上,则someTransientField
将被视为瞬态。因此,在方法上使用@Transient
的情况是这样的。private Long id;
private String someTransientField;
@Id
private Long getId() {
return this.id;
}
@Transient
private String getSomeTransientField() {
return this.someTransientField;
}
@Target
注解允许您定义此注解可以使用的位置,例如类、字段、方法等。指示哪些程序元素可以使用注释注释类型的实例进行注释。
@Target(value={METHOD,FIELD})
表示该注解只能用于类型顶部(通常是方法和字段)。您可以完全省略目标,以便注解可用于类、方法和字段。
在 JPA 中,@Target
- 标记另一个注解 @Transient
,以限制注解可以应用于哪种 Java 元素。
这意味着该注解可以用于Field
或method
。
如果字段被注释,则将使用反射访问该字段。
如果方法(getter)被注释,则将使用getter方法来访问它。