Nullpointer Exception bei Hibernate
Folgende Meldung hat mich Heute einige Nerven gekostet:
java.lang.NullPointerException
at org.hibernate.tuple.AbstractTuplizer.createProxy (AbstractTuplizer.java:249)
at org.hibernate.persister.entity.BasicEntityPersister .createProxy(BasicEntityPersister.java:2831)
at org.hibernate.event.def.DefaultLoadEventListener. createProxyIfNecessary(DefaultLoadEventListener.java:218)
at org.hibernate.event.def.DefaultLoadEventListener .proxyOrLoad(DefaultLoadEventListener.java:163)
at org.hibernate.event.def.DefaultLoadEventListener. onLoad(DefaultLoadEventListener.java:79)
at org.hibernate.impl.SessionImpl.load (SessionImpl.java:603)
at org.hibernate.impl.SessionImpl.load (SessionImpl.java:596)
....
Diese kam beim einfachen Laden eines Objektes mit Hibernate. Das interessante ist hierbei die Subklasse, welche geladen werden sollte.
Der Klassen sahen wie folgt aus:
public abstract class A {
protected A() {
...
}
...
}
public class B extends A {
public B(String param1, String param2) {
...
}
....
}
Und geladen sollte mit:
session.load(B.class, new Integer(1));
Der Fehler ganz einfach ist, dass die Klasse B keinen Konstruktor ohne Parameter hat, was unbedingt Voraussetzung für Hibernat ist. Nachdem nun private B() { } in der Klasse B noch hinzugefügt worden ist funktionierte auch das laden.