Ich habe eine Datenbanktabelle, die aus Ländern besteht. In meinem DAO, die HibernateDAOSupport die folgende Methode ...Warum generiert die loadAll() - Methode von Spring's HibernateTemplate Updates für jede Zeile?
public List<Country> getCountries() {
return getHibernateTemplate().loadAll(Country.class);
}
... generiert die folgende Aktivität erweitert:
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
Die Methode funktioniert jedoch. Ich bekomme meine Länderliste, aber was ist mit all den Updates?
Mein Mapping für diese Klasse ist nicht sehr exotisch:
<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>
jemand mich in der richtigen Richtung zeigen kann? Warum würde loadAll Updates auslösen?
Danke für den Tipp auf dynamic-update. Es scheint, dass die Eigenschaften, die die Probleme verursachen, Zeichenfelder sind. Jetzt muss ich graben und herausfinden, wie man Zeichenfelder bestimmter Größe abbildet ... sollte ich nur Zeichenfolgen verwenden? – Boden
Ah, Sie haben Char (2) und Char (3) Character Arrays der Länge 2 und 3? Ich denke, Sie haben die Java-Funktion getroffen, dass Arrays nicht gleichwertig() implementieren, indem Sie paarweise Vergleiche durchführen, nur nach Identität. Also, wenn Hibernate sah, ob das duplizierte Array gleich war, bekam es falsche Treffer. Ja, ich würde die Verwendung von Zeichenfolgen empfehlen. Möglicherweise haben Ihre Setter eine IllegalArgumentException ausgelöst, wenn jemand versucht, den 2-stelligen Code beispielsweise auf eine 3-stellige Zeichenfolge zu setzen. – araqnid
Danke, ich habe genau das gemacht und es funktioniert gut. Lerne hier alle zehn Minuten etwas Neues! :) – Boden