私は国々からなるデータベーステーブルを持っています。しかし、SpringのHibernateTemplateのloadAll()メソッドが各行の更新を生成するのはなぜですか?
Hibernate: update countries set name=?, iso_alpha_2=?, iso_alpha_3=? where id=?
Hibernate: update countries set name=?, iso_alpha_2=?, iso_alpha_3=? where id=?
Hibernate: update countries set name=?, iso_alpha_2=?, iso_alpha_3=? where id=?
...
once for each row
メソッドの動作:HibernateDAOSupport以下の方法拡張私のDAO ...
public List<Country> getCountries() {
return getHibernateTemplate().loadAll(Country.class);
}
では...以下のアクティビティを生成します。私は国のリストを取得しますが、すべての更新プログラムは何ですか?このクラスの
私のマッピングがひどくエキゾチックではありません。
<class name="Country" table="countries">
<id name="id" column="id">
<generator class="identity"/>
</id>
<property name="name" column="name"/>
<property name="alpha2" column="iso_alpha_2" />
<property name="alpha3" column="iso_alpha_3" />
</class>
誰もが正しい方向に私を指すことができますか? loadAllが更新をトリガーするのはなぜですか?
ダイナミックアップデートのヒントをありがとう。問題を引き起こすプロパティは文字配列であるようです。今私はいくつかの掘削を行い、特定のサイズの文字配列をマップする方法を理解しなければなりません...文字列を使うだけですか? – Boden
ああ、長さ2と3の文字配列にchar(2)とchar(3)をマッピングしていましたか?私はあなたがペアでの比較を行うことによって配列がequals()を実装していないJavaの機能にヒットしたと思います。したがって、重複した配列が等しいかどうかを確認するためにHibernateが見たとき、それは誤ったヒットを得ていました。 はい、文字列を使用することをおすすめします。たとえば、2文字のコードを3文字の文字列に設定しようとすると、設定者がIllegalArgumentExceptionをスローする可能性があります。 – araqnid
ありがとう、私はちょうどそれをし、それは正常に動作します。この場所を10分ごとに何か新しいことを学びましょう! :) – Boden