回答:
@Basic
属性が永続化され、標準のマッピングが使用されることを示します。これには、属性を遅延ロードするかどうか、およびnull値を許可するかどうかを指定できるパラメーターがあります。
@Column
属性を永続化するデータベース内の列の名前を指定できます。
どちらか一方を指定しないと、デフォルトの動作が得られるため、特別な場合を除いて、通常は1つだけを使用します。
したがって、属性の遅延読み込みを行い、列名を指定したい場合は、
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
デフォルトの遅延のない動作@Column
が必要な場合は、それで十分です。
加えて、@ djnaの答え、それはそれは注目に値する@Basic
と比較しなければならない@OneToMany
、@ManyToOne
と@ManyToMany
。これらの1つだけを任意のプロパティで指定できます。
@Column
そして @JoinColumn
データベース列のプロパティを記述するために、これらのいずれかと一緒に指定することができます。
これらは一緒に使用できる2つのアノテーションセットですが、一度に使用できるのは各セットの1つのアノテーションのみです。
Basicはプリミティブフィールド用に設計されていることは注目に値します
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
基本属性とは、属性クラスが文字列、数値、日付、プリミティブなどの単純な型である属性です。基本属性の値は、データベースの列値に直接マップできます。
サポートされるタイプと変換は、JPA実装とデータベースプラットフォームによって異なります。データベースタイプに直接マップしないタイプを使用する基本的な属性は、バイナリデータベースタイプにシリアル化できます。
JPAで基本的な属性をマップする最も簡単な方法は、何もしないことです。他の注釈がなく、他のエンティティを参照しない属性は、自動的に基本としてマップされ、基本タイプではない場合でもシリアル化されます。属性の列名はデフォルトで、属性名と同じ名前が大文字で付けられます。
@BasicアノテーションはJPAエンティティに適用され、@ Columnはデータベース列に適用されます。@ Basicアノテーションのオプション属性は、エンティティフィールドをnullにできるかどうかを定義します。一方、
@Basic
なし@Column
で使用できると想定しています。そのため、optional
およびnullable
プロパティが両方に存在します。私は正しいですか?