【问题标题】:Java - criteria API - usage outside of JPAJava - 标准 API - JPA 之外的使用
【发布时间】:2017-05-18 17:24:48
【问题描述】:

我正在使用 JPA 2.1 并试图引用 JPA 范围之外的元模型,这只是获取给定类的字段名称的简单方法。但是,当我这样做时,我最终会得到一个 NPE:

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

我希望在标准输出中获得“attribute:id”,但我却获得了 NPE。如果我在条件查询中使用相同的内容(过滤 id),我会得到我期望的结果。

Job_ 类没有什么特别的,它只是一个我应该可以引用的静态类。如果我看看我是如何使用标准 API 的,它是相同的。我传入一个 Attribute 或 SingularAttribute ,它告诉 JPA 我想过滤什么属性。

我应该能够做到这一点,还是我做错了什么?

【问题讨论】:

    标签: java jpa-2.0 criteria-api


    【解决方案1】:

    静态元模型中的字段在运行时由您的 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/

    【讨论】:

    • 谢谢,一旦我使用或设置了休眠,它就可以按预期工作。
    猜你喜欢
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 2012-09-25
    • 2011-01-06
    • 2011-05-04
    • 2018-08-22
    • 1970-01-01
    相关资源
    最近更新 更多