# Static Metamodel



## Kababär (2. Apr 2017)

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:

```
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:

```
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?


----------



## Kababär (2. Apr 2017)

Übeltäter gefunden.. der Generator hat meiner hbm.xml's verändert, z.B. hat er da "generated="never"" und sort="unsorted" für Properties hinzugefügt. Darunter hat er wohl auch den Spalteneintrag entfernt.

Wusste nicht, dass er das tut.


----------

