2011-11-11 9 views
1

hereの問題について私は苦労しています。 hashCode()equals()をオーバーライドして、コレクションセーフな永続クラスを作成しました。私のエンティティは良い自然キーを持っていないので、これらのメソッドは@Idフィールドを使う必要があるので、オブジェクト作成時にidを割り当てる必要があります。しかし、今やHibernateは、インスタンスが一時的か永続的かを判断する別の方法が必要であり、それに使用する論理フィールドは@Versionです。@Idの代わりに@Versionを使用して永続状態をチェックするようにHibernateに指示します。アノテーションを使用していますか?

<version unsaved-value="null">を使用してhbmファイルでこれを行うことができます。しかし、私はunsaved-value属性をサポートしていない注釈を使用しています。単純な@Versionアノテーションを使用しているだけの場合、Hibernateはそれを使用して永続性状態を判断するのに十分スマートになりますか?私はHibernateのドキュメントをチェックしましたが、少し曖昧です。

誰もが、クラス全体のマッピングをhbmファイルに移動する以外の解決方法を知っていますか?

答えて

0

あなたのエンティティモデルをもう一度考えてください。ナチュラルキー(コンポジットキー)が見つからない場合は、ここで問題が発生する可能性があります。

あなたのidをequals()/ hashCode()に入れてはいけません。その目的のために@Versionアノテーションを使用しないでください。それはあなたの人生をより困難にします。

関連する問題