Hallo,
Ups, im Forum-Enthusiasmus bin ich wohl etwas ungenau geworden
Aber kein Problem, dann werd ich mal ein wenig ausführlicher werden.
Entität:
Code:
@Entity
public class User extends PersistentEntity {
private String login = null;
private String encryptedPassword = null;
public User() {
}
...Getter und Setter.
}
Generisches DAO:
Code:
public class GenericDAOHibernate<T extends PersistentEntity, ID extends Serializable> {
...
public List<T> findAll(Preload[] preloads) {
return findByCriteria(preloads);
}
protected List<T> findByCriteria(Preload[] preloads, Criterion... criterion) {
Criteria crit = getSession().createCriteria(getPersistentClass());
for (Criterion c : criterion) {
crit.add(c);
}
List<T> result = crit.list();
preload(result, preloads);
return result;
}
...
// Code aus Java-Magazin 4.08
protected void preload(Object entity, Preload[] preloads) {
if (entity == null) {
return;
}
if (Hibernate.isInitialized(entity)) {
return;
}
Hibernate.initialize(entity);
if ((preloads == null) || (preloads.length == 0)) {
return;
}
if (entity instanceof Collection) {
for (Object resultEntity : (Collection<?>) entity) {
preload(resultEntity, preloads);
}
} else {
for (Preload preload : preloads) {
if (preload.getModelClass().isInstance(entity)) {
Object getterResult = invokeGetter(entity, preload);
preload(getterResult, preloads);
}
}
}
}
...
}
Mein Problem tritt nun bei folgender Verwendung des oben gezeigten Codes auf (Anm.: UserDAOHibernate extended GenericDAOHibernate):
Code:
UserDAOHibernate uDAO = new UserDAOHibernate(session);
List<User> users = uDAO.findAll(preloads);
Beim Aufruf von findAll wird nach dem Laden der User-Entitäten aus der Datenbank die Methode preload mit der geladenen Liste als Parameter aufgerufen. Bei der fett markierten Stelle kehrt preload jedoch schon zurück, ohne eventuelle Preloads durchzuführen. Ich sehe irgendwie nicht, wo der Fehler liegen könnte. Es scheint, als wäre jede gerade aus der DB geladene Liste bereits initialisiert und deshalb "bricht" preload ab.
Hoffe mein Problem ist jetzt etwas klarer geworden.
lg, gurks
Lesezeichen