我最近读到了关于JPA2.0规范中标准API的文章,其中引入了拥有元模型类(see here)的概念。我知道如何使用它,但我不明白的是,为什么需要为Criteria API创建这个新概念。
发布于 2015-04-16 17:39:45
如果没有元模型,我们将访问Employee
实体的name
属性,如下所示,
Root<Employee> employee = query.from(Employee.class);
employee.get("name");
使用元模型,您可以将其缩短为
Employee_.name
其中Employee_
是Employee
实体的元模型,我认为不需要为实体创建根是使用元模型api的优势。
发布于 2015-04-20 04:31:04
元模型有助于编写类型安全的代码
CriteriaQuery<Double> c = cb.createQuery(Double.class);
Root<Account> a = c.from(Account.class);
c.select(cb.avg(a.get(Account_.balance)));
在这里,编译器可以通过检查一种类型的balance属性来检查错误(例如,如果balance是一个字符串,就会出现一些错误)。
https://stackoverflow.com/questions/29670694
复制相似问题