web-dev-qa-db-ja.com

この場所ではアノテーション@Indexは許可されていません

@Indexjavax.persistenceアノテーションを使用しようとすると、Eclipseでこのエラーが発生します。

Java.util.Dateアノテーションが付けられたクラス内の@Entityフィールドの直前で使用しています。

以前はまったく同じ場所でorg.hibernate.annotations.Indexを使用していましたが、問題ありませんでした。

hibernate-core4.1.9.Finalから4.3.0.Betaおよびhibernateにアップグレードした後に問題が発生しました-commons-annotation s 4.0.1から4.0.2へ。 @Indexは非推奨であり、javax.persistenceを推奨しています。

私が見つけたすべてのドキュメントと例は、クラスメンバーの前に@Indexを置きます。何が欠けていますか?

29
Vituel

JPAインデックスアノテーションは、@Table@SecondaryTableなどの別のアノテーションの一部としてのみ使用できます( javadoc の「関連項目」セクションを参照)。

@Table(indexes = { @Index(...) })
41
JB Nizet

Eclipselinkを使用する場合は、このインポートをクラスに追加できます。

import org.Eclipse.persistence.annotations.Index;

次に、@Indexを次のようにフィールドに追加します。

public class FooClass {
   @Index
   int field1;
}

または

@Index(columnNames = {"field1", "field2"})
public class FooClass {       
   int field1;
   int field2;
}
0
Joe Almore

ここを参照してください: https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#annotations-jpa-index

これを使って:

@Table 
.......,indexes = @Index(columnList = ("COLUMN_NAME"),name="CUSTOM NAME AT INDEX",unique=false)
......
0
user4107406