重複の可能性:
JPAを使用してインデックス(一意でないキー)を指定する
検索パフォーマンスを向上させるために、エンティティ列にインデックスを定義する方法はありますか? hibernateが@Indexと@IndexColumnを提供するのを見ましたが、それを行うためのJPAの方法を探しています。
ありがとう
これが私のエンティティの例です。名前列にインデックスを付ける必要があります
@Entity
@Table(name = "MY_TABLE")
public class MyEntity {
private long id;
private String name;
private String sourceInfo;
...
いいえ、jpaはインデックスを定義または作成する機能を提供していません。いくつかの(私には知られていない)理由で、JPAで一意のインデックスを作成することしかできません。
Hibernateを使用していない場合、またはこれらのアノテーションを本当に使用したくない場合は、それに応じてデータベースを出力または更新するためにアノテーションとプロセッサを構築する必要がありますが、それはそれほど簡単ではないと思います(そしてそれは間違いなくです、非標準)
Hibernateでインデックスを定義する方法の例を次に示します
@org.hibernate.annotations.Table(
appliesTo = "table_name",
indexes = {
@Index(name="single_column_index", columnNames = "col"),
@Index(name="multi_column_index", columnNames = {"col1", "col2"}),
}
)
OpenJPAでは、非標準のアノテーションを指定して、プロパティのインデックスを定義できます。
詳細は ここ です。
標準のJPAアノテーションはありません。 (JPAはDDL生成さえ必要としません)。
EclipseLinkの場合 @ Indexページを参照 。