我正在使用JPA 2.1并试图引用JPA范围之外的元模型,这只是获取给定类的字段名称的简单方法。然而,当我这样做时,我最终获得了NPE:
System.out.println("attribute:" + Job_.id.getName());
我期待得到"属性:id"在stdout,但我获得了NPE。如果我在条件查询中使用相同的内容(过滤id),我会得到我期望的结果。
Job_类没什么特别的,它只是一个我应该能够引用的静态类。如果我查看我如何使用条件API,它是完全相同的。我传入一个Attribute或SingularAttribute,告诉JPA我要过滤哪个属性。
我能做到这一点,还是我做了一些严重的错误?
答案 0 :(得分:0)
静态元模型中的字段由运行时填充,由JPA提供程序(hibernate,eclipselink ...)填充。
有一种方法可以使用SerializedLambda获取带有lambda表达式的属性名称。
看看这个:https://github.com/benjiman/lambda-type-references 这个:http://benjiweber.co.uk/blog/2013/12/28/typesafe-database-interaction-with-java-8/