任何人都可以解釋爲什麼@Transient註解在JPA有@Target 方法以及?爲什麼JPA瞬態註釋在Target中有方法?
我指的是文檔http://docs.oracle.com/javaee/5/api/javax/persistence/Transient.html
@Target(值= {METHOD,FIELD})
提前感謝!
任何人都可以解釋爲什麼@Transient註解在JPA有@Target 方法以及?爲什麼JPA瞬態註釋在Target中有方法?
我指的是文檔http://docs.oracle.com/javaee/5/api/javax/persistence/Transient.html
@Target(值= {METHOD,FIELD})
提前感謝!
在JPA實體中,您可以註釋字段或方法(getter)。 @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;
}
你可以幫助一個@Transient更適合在方法上使用而不是在現場使用的例子嗎? – user2906555
我已經添加了一個例子,希望能夠說清楚。 –
這使事情變得清晰。感謝你的回答。 – user2906555
@Target
註解讓您可以定義這個註解可以使用,例如,類,字段,方法等指示哪個節目元素(s)可以使用帶註釋的註釋類型的實例進行註釋。
@Target(value={METHOD,FIELD})
意味着註釋只能用於類型的頂部(通常是方法和字段)。您可以將目標放在一起,這樣註釋可以用於類,方法和字段。
在JPA @Target
中 - 標記另一個註釋@Transient
以限制註釋可應用於哪種類型的java元素。
這意味着註釋可用於Field
或method
。
如果該字段已註釋,則將使用反射來訪問該字段。
如果方法(getter)被註釋了,那麼將使用getter方法來訪問它。
您可以通過getter方法或字段訪問瞬態屬性,這就是爲什麼它具有 – Saravana
如何讓它在方法上有意義?只允許在田野上不夠用? – user2906555
不,您可以使用反射或getter方法編程訪問字段。 – Saravana