0

idフィールドをaccess="noop"に設定したhibernatexmlマッピングファイルを使用してテーブルを永続化しようとしています。主キーフィールドをクラスファイルに含めたくないので、これを行っています。私が保持しているクラスはサードパーティのライブラリからのものであり、それらを変更すると、サードパーティのライブラリが更新されるときにメンテナンスの悪夢になります。Javaクラスファイルを変更せずにオブジェクト間の関係を維持できることを望んでいました。

すなわち

<hibernate-mapping>
<class name="blah" table="blah">
        <id name="blah_id" type="long" access="noop" >
            <column name="BLAH_ID" />
            <generator class="native" />
        </id>
        <property name="value" type="double">
            <column name="VALUE" />
        </property>
</class>
</hibernate-mapping>

残念ながら、これは完全には機能しません。noopアクセス指定子は、hibernateがフィールドにアクセスしないように要求しますが、save関数が戻ったときに、hibernateはフィールドに値を書き込もうとし、次のエラーが発生します。

third.party.objectのインスタンスの識別子が2からnullに変更されました

すべてのクラスを継承し、リレーションのフィールドを追加して、サードパーティライブラリのラッパーを作成することもできましたが、より良いソリューションを本当に望んでいました。

pksをクラスから除外したいのは合理的なようです。それ、どうやったら出来るの?

何か案は?

4

1 に答える 1

0

コンポーネントクラスは、あなたが以前に探していたものだと思います。

于 2012-03-03T01:12:08.747 に答える