2017-05-18 3 views
0

J'utilise JPA 2.1 et j'essayais de référencer des métamodèles en dehors d'une portée JPA comme un moyen simple d'obtenir les noms de champs pour une classe donnée. Cependant, quand je fais ça, je finis par obtenir un NPE:Java - API de critères - utilisation en dehors de JPA

System.out.println("attribute:" + Job_.id.getName()); 

Je me attendais à obtenir « attribut: id » dans stdout, mais je reçois un NPE. Si j'utilise la même chose dans une requête de critères (filtrage sur l'identifiant), j'obtiens ce que j'attends.

La classe Job_ n'a rien de spécial, c'est juste une classe statique que je devrais pouvoir référencer. Si je regarde comment j'utilise l'API de critères, c'est identique. Je passe dans un attribut ou SingularAttribute et cela indique à JPA l'attribut sur lequel je souhaite filtrer.

Dois-je être capable de faire cela, ou est-ce que je fais quelque chose de radicalement faux?

Répondre

0

Les champs des métamodèles statiques sont renseignés en temps d'exécution, par votre fournisseur JPA (hibernate, eclipselink ...).

Il existe un moyen d'obtenir un nom de propriété avec des expressions lambda en utilisant SerializedLambda.

Regardez ceci: https://github.com/benjiman/lambda-type-references Et ceci: http://benjiweber.co.uk/blog/2013/12/28/typesafe-database-interaction-with-java-8/

+1

Merci, une fois que je l'utilise ou mise en veille prolongée d'installation, il fonctionne comme prévu. – Walter