【问题标题】:What is purpose of metamodel class in JPA2.0?JPA2.0中元模型类的目的是什么?
【发布时间】:2015-06-22 14:55:47
【问题描述】:

我最近在阅读 JPA2.0 规范中的 Criteria API,其中他们介绍了具有元模型类的概念 (see here)。我知道如何使用它,但我不明白为什么需要为 Criteria API 创建这个新概念。

【问题讨论】:

    标签: jakarta-ee jpa criteria-api


    【解决方案1】:

    没有元模型,我们访问Employee实体的name属性如下,

    Root<Employee> employee = query.from(Employee.class);
    employee.get("name");
    

    使用元模型,您可以将其缩短为

    Employee_.name
    

    其中Employee_Employee 实体的元模型 我认为不需要为实体创建根是使用元模型 api 的优势。

    【讨论】:

      【解决方案2】:

      元模型有助于编写类型安全的代码

      CriteriaQuery<Double> c = cb.createQuery(Double.class);
      Root<Account> a = c.from(Account.class);
      c.select(cb.avg(a.get(Account_.balance)));
      

      这里编译器可以通过检查余额属性的类型来检查错误(例如,如果余额是字符串,则应该有一些错误)

      【讨论】:

        猜你喜欢
        • 2014-09-10
        • 2020-04-12
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 2019-03-11
        • 1970-01-01
        • 2014-03-28
        • 2017-10-23
        相关资源
        最近更新 更多