Hi,
wenn ich das richtig verstanden habe, kann man für JPA Queries sogenannte Metamodels generieren, um eine Typsicherheit zu gewährleisten.
Zuerst hatte ich ein Problem mit dem Erstellen der Metaklassen per Maven, denn es wurde nichts generiert. Daher habe ich das für die paar Klassen händisch einfach gemacht, jedoch sind die Attribute der Metamodelle null.
Eine Klasse sieht bspw so aus:
In einer Query verwende ich die Klasse dann so:
Beim Debuggen hat der Wert User_.kuerzel eine Null-Referenz und daher wird eine NPE geworfen. Aus Interesse habe ich mal die anderen Attribute angesehen und die sind seltsamerweise nicht Null. Die Namen der Attribute sind alle identisch.
Wieso ist dieses eine Attribut Null?
Und wie kann ich das beheben?
wenn ich das richtig verstanden habe, kann man für JPA Queries sogenannte Metamodels generieren, um eine Typsicherheit zu gewährleisten.
Zuerst hatte ich ein Problem mit dem Erstellen der Metaklassen per Maven, denn es wurde nichts generiert. Daher habe ich das für die paar Klassen händisch einfach gemacht, jedoch sind die Attribute der Metamodelle null.
Eine Klasse sieht bspw so aus:
Code:
import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;
@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(value = User.class)
public class User_ {
public static volatile SingularAttribute<User, Integer> id;
public static volatile SingularAttribute<User, Login> login;
public static volatile SingularAttribute<User, Role> role;
public static volatile SingularAttribute<User, String> vorname;
public static volatile SingularAttribute<User, String> nachname;
public static volatile SingularAttribute<User, String> kuerzel;
public static volatile SingularAttribute<User, Date> gesperrt;
public static volatile SingularAttribute<User, Date> erstellt;
}
In einer Query verwende ich die Klasse dann so:
Code:
criteriaQuery.where(builder.equal(userRoot.get(User_.kuerzel), username));
Beim Debuggen hat der Wert User_.kuerzel eine Null-Referenz und daher wird eine NPE geworfen. Aus Interesse habe ich mal die anderen Attribute angesehen und die sind seltsamerweise nicht Null. Die Namen der Attribute sind alle identisch.
Wieso ist dieses eine Attribut Null?
Und wie kann ich das beheben?