だから、私はここでアイデアを求めてストローを本当に握っています。(注:これは断続的な問題です)
「子」オブジェクトのコレクションを持つ「親」オブジェクトがあります。
<親のもの>
...
<set name = "children" reverse = "true" order-by = "child_id">
<cacheusage = "read-write" />
<key column = "parent_id" />
<one- to-many class = "ChildClass" />
</ set>
...
</ parent>
<child stuff>
...
<many-to-one name = "parent"
column = "parent_id"
insert = "true"
update = "true"
not-null = "true"
class = "ParentClass"
index = "idx_child_parent" /> ...
</ child>
次のようなクエリを実行した場合:"ChildClassの子から子を選択"+ "where child.parent =:parent"; それはすべての子供を見つけます。完全。
ただし、親オブジェクトを検索(および検索)すると、休止状態が実行されてParentClassが作成されますが、子の1つ(最初の)の子のみが設定されます。私は実際に休止状態のコードにデバッグし、ParentClassでのsetChildren()の呼び出しは、最初のクエリからさらに多くのものがあることがわかっているときに、1つの要素コレクションのみが送信されていることを発見しました。
したがって、私はEHCacheを使用していますが、それをクリアしても効果はありません。CacheManager.getInstance()。clearAll();を呼び出します。
アプリケーションを再起動しても機能します。一見ランダムに見える親のインスタンスで、その後すぐに中断するだけです。
これを直接引き起こすために起こっていること(私が知っていること)は何もありません。これを引き起こす休止状態のバグ、またはEHCacheのバグを知っている人はいますか。キャッシュでclearを正しく呼び出していますか?
どんなポインタでもいいでしょう。
私はhibernate3.2.6を使用していますが、同じ問題がmysqlとpostgresで発生しています。
編集:要素が1つしかないこのコレクションは、「存在しない」状態にあることも追加する必要があります。すなわち。子要素が1つだけになるトランザクションはありませんでした