2

トラブルシューティングしようとしているGrails1.2.5プロジェクトでは、GrailsS​​earchableプラグイン.5.5.1を使用してます

問題は、大きなセットのドメインクラスにインデックスを付けようとすると、Grailsが次のようにスローし続けることです。

エラーhibernate.AssertionFailure-アサーションエラーが発生しました(これはHibernateのバグを示している可能性がありますが、セッションの安全でない使用が原因である可能性が高いです)org.hibernate.AssertionFailure:コレクション[domain-class]はflush()によって処理されませんでした

ただし、関連するドメインクラスは、検索可能なプラグインの呼び出し以外の問題なしに、 hibernateによってマッピングおよび使用されています。

検索可能なプラグインの使用法は次のとおりです。

  1. でコンパスセッションを作成するcompass.openSession()
  2. コンパストランザクションを開始します。compassSession.beginTransaction()
  3. 次にcompassSession.create(result.get(0))、インデックス付けされていない重要なドメインクラスで呼び出されます
  4. 最後にcompassTransaction.commit()、トランザクションをコミットするために呼び出されます。
  5. 2に移動し、次のドメインクラスを処理します

3番目と4番目のドメインクラスの間で、エラーをスローする自動フラッシュがトリガーされます。

誰かがこの問題を解決する方法について何かヒントを教えてもらえますか?

誰かが以前にこの問題に遭遇したことがありますか?

searchable-pluginの.5より前のバージョンでは、これにシステム上の問題があったことを私は知っています。 それらの問題が完全に修正されなかった可能性はありますか?

4

1 に答える 1

2

この記事はそれを理解するのに役立ちました。ダーティ オブジェクトを含むセッションで Hibernate クエリを実行している必要があり、それらflush()は変更中に -ed になります。

変更が発生する前に、すべての読み取り専用クエリをトランザクションの外に移動し、 で変更を行うことができる場合がありますwithTransaction{}

于 2011-03-21T14:10:01.633 に答える