【发布时间】:2015-06-22 14:55:47
【问题描述】:
我最近在阅读 JPA2.0 规范中的 Criteria API,其中他们介绍了具有元模型类的概念 (see here)。我知道如何使用它,但我不明白为什么需要为 Criteria API 创建这个新概念。
【问题讨论】:
标签: jakarta-ee jpa criteria-api
我最近在阅读 JPA2.0 规范中的 Criteria API,其中他们介绍了具有元模型类的概念 (see here)。我知道如何使用它,但我不明白为什么需要为 Criteria API 创建这个新概念。
【问题讨论】:
标签: jakarta-ee jpa criteria-api
没有元模型,我们访问Employee实体的name属性如下,
Root<Employee> employee = query.from(Employee.class);
employee.get("name");
使用元模型,您可以将其缩短为
Employee_.name
其中Employee_ 是Employee 实体的元模型
我认为不需要为实体创建根是使用元模型 api 的优势。
【讨论】:
元模型有助于编写类型安全的代码
CriteriaQuery<Double> c = cb.createQuery(Double.class);
Root<Account> a = c.from(Account.class);
c.select(cb.avg(a.get(Account_.balance)));
这里编译器可以通过检查余额属性的类型来检查错误(例如,如果余额是字符串,则应该有一些错误)
【讨论】: