は、誰もがJPAで@Transientアノテーションは、同様方法 @targetた理由を例を使って説明できますか?JPA TransientアノテーションのメソッドがTargetにあるのはなぜですか?
は、私はドキュメントhttp://docs.oracle.com/javaee/5/api/javax/persistence/Transient.html
@Target(値= {メソッド、フィールド})事前に
感謝を参照しています!
は、誰もがJPAで@Transientアノテーションは、同様方法 @targetた理由を例を使って説明できますか?JPA TransientアノテーションのメソッドがTargetにあるのはなぜですか?
は、私はドキュメントhttp://docs.oracle.com/javaee/5/api/javax/persistence/Transient.html
@Target(値= {メソッド、フィールド})事前に
感謝を参照しています!
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;
}
@Transientがフィールドではなくメソッドで使用する方が適している例を手伝ってもらえますか? – user2906555
私は例を追加しました。 –
それは事を明確にします。答えをありがとう。 – user2906555
@Target
注釈は、あなたがなど、この注釈を使用することができ、例えば、クラス、フィールド、メソッドを定義することができますされているプログラム要素を示し、注釈付き注釈タイプのインスタンスを使用して注釈を付けることができます。
@Target(value={METHOD,FIELD})
は、アノテーションはタイプ(メソッドとフィールド)の上でのみ使用できることを意味します。ターゲットをすべて一緒に残しておくと、クラス、メソッド、およびフィールドの両方でアノテーションを使用できます。 JPA @Target
で
は - アノテーションに適用することができるJava要素の種類を制限する別の注釈@Transient
をマーク。
それは注釈がField
またはmethod
上で使用することができることを意味します。
フィールドが注釈されている場合、フィールドは、リフレクションを使用してアクセスされます。
方法(ゲッタ)が注釈されている場合、ゲッターメソッドがアクセスするために使用されます。
それは方法でそれを許可しても意味がどのよう – Saravana
を持っているなぜあなたはgetterメソッドまたはフィールドによって一時属性にアクセスすることができ、それがですか?フィールドだけで十分ではないはずですか? – user2906555
いいえ、リフレクションメソッドまたはゲッタメソッドを使用してフィールドにアクセスするようにプログラムできます。 – Saravana