10

次の注釈を追加して、EJB3 エンティティの 1 つにキャッシュを有効にし、ehCache でキャッシングをテストしました。ここでは、永続化プロバイダーとして Hibernate を使用しています。

....
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Table(name = "F")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
@NamedQueries({ @NamedQuery(name = "F.findAll", query = "SELECT f FROM F f")})
public class F implements Serializable {
   .....
}

以下を persistence.xml に追加しました。

<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/>
<property name="hibernate.cache.provider_configuration_file_resource_path" value="/ehcache.xml"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>

そして、コンパイルしようとすると、次のエラーが発生します。

/persistence/F.class): 警告: タイプ 'org.hibernate.annotations.Cache' にアノテーション メソッド 'usage()' が見つかりません: org.hibernate.annotations.Cache のクラス ファイルが見つかりません コンパイラで例外が発生しました(1.6.0_16)。Bug Parade で重複がないか確認した後、Java Developer Connection ( http://java.sun.com/webapps/bugreport ) でバグを報告してください。プログラムと次の診断をレポートに含めてください。ありがとうございました。com.sun.tools.javac.code.Symbol$CompletionFailure: org.hibernate.annotations.CacheConcurrencyStrategy のクラス ファイルが見つかりません

誰かがここで私を助けて、私が何をする必要があるか、または現在間違っているかを教えてもらえますか?

4

5 に答える 5

4
@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)

問題を解決します

于 2017-09-09T14:51:50.877 に答える
2

まあ..私はそれを最終的に動作させることができました。それに対する修正は本当に奇妙で、実際に報告されたバグのようです。

私がする必要があったのは、すべてのHibernateライブラリをNetbeans web/warプロジェクトにも追加することでした。私がそれをすると、エラーはなくなりました。

これは奇妙なことでした。なぜなら、HibernateライブラリはすでにWebプロジェクトライブラリにも含まれていたearプロジェクトに含まれていたからです。

于 2009-11-18T14:40:31.373 に答える
0

これを解決するには、休止状態のライブラリを提供されているものから、maven マルチ モジュール プロジェクトの pom でコンパイルするように変更しました。

于 2011-06-20T20:53:49.280 に答える
0

web/war プロジェクトに hibernate-annotations jar を追加するだけです。

于 2010-09-13T23:45:27.507 に答える
0

あなたは何も悪いことをしていません - あなたの注釈は問題ありません。

エラー メッセージから判断すると、これはコンパイラのバグです。あなたはできる:

  1. 最新の JDK バージョン(1.6.0_16-b01) に更新します。
  2. 注釈を再配置し、コンパイラのバグが引き起こされないことを願っています。はい、それはばかげているように聞こえますが、私は@Cache宣言を広範に使用しており (他の多くの人がそうしていると確信しています)、コンパイルに問題はありません。
  3. 別のコンパイラを試す (Eclipse からビルド)
  4. バグ レポートを Sun に送信します。
于 2009-10-23T17:20:02.703 に答える