JPA2.0中元模型类的目的是什么?

时间:2015-04-16 09:32:05

标签: java-ee jpa criteria-api

我最近阅读了JPA2.0规范中的Criteria API,他们在这里引入了metamodel类(see here)的概念。我理解如何使用它,但我不明白为什么需要为Criteria API创建这个新概念。

2 个答案:

答案 0 :(得分:2)

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

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

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

Employee_.name

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

答案 1 :(得分:0)

Metamodel有助于编写类型安全代码

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

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