2017-05-18 3 views
0

私はJPA 2.1を使用しており、特定のクラスのフィールド名を取得する簡単な方法として、JPAスコープ外のメタモデルを参照しようとしていました。私が取得するために期待していたJava基準API - JPA外での使用

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

:私はそれを行うときしかし、私は、NPEを取得し終わる:STDOUTに「属性ID」を、代わりに私は、NPEを取得します。条件照会(idのフィルタリング)で同じものを使用すると、私は期待したことを得ます。

Job_クラスは何も特別なものではなく、私が参照できる静的なクラスです。基準APIをどのように使用しているかを見れば同じです。私はAttributeまたはSingularAttributeを渡し、それはJPAにフィルタリングする気になれる属性を伝えます。

私はこれを行うことができますか、または私は何か劇的に間違って何をしていますか?

答えて

0

静的メタモデルのフィールドは、JPAプロバイダ(hibernate、eclipselink ...)によって実行時に入力されます。

ラムダ式でSerializedLambdaを使用してプロパティ名を取得する方法があります。この時

ルック:https://github.com/benjiman/lambda-type-references そして、この:http://benjiweber.co.uk/blog/2013/12/28/typesafe-database-interaction-with-java-8/

+1

おかげで、私が使用したり、期待通りにセットアップHibernateは、それが動作たら。 – Walter

関連する問題