一尘不染

连接到类名的下划线是什么意思?

java

我在阅读“ JPA
2.0中的动态类型安全查询”一
文,偶然发现了以下示例:

EntityManager em = ...
CriteriaBuilder qb = em.getCriteriaBuilder();
CriteriaQuery<Person> c = qb.createQuery(Person.class);
Root<Person> p = c.from(Person.class);
Predicate condition = qb.gt(p.get(Person_.age), 20);
//                                     ^^ --- this one
c.where(condition);
TypedQuery<Person> q = em.createQuery(c); 
List<Person> result = q.getResultList();

我想知道,这里的下划线到底是什么意思?

由于下划线是类名的有效部分,所以我不明白为什么可以在JPA中使用它。我用代码中的现有实体检查了这个,当然我的班级无法解析为ClassName_


阅读 259

收藏
2020-12-03

共1个答案

一尘不染

那就是持久性的元模型。这是您可以在Java中键入安全JPA查询的方法。它允许查询静态地检查您的查询,因为类Bar_描述了您的JPA
Bar。在HQL中,您可以轻松键入错误的查询,直到查询运行才知道。

因此,从技术上讲,这_并没有任何意义,但这是JPA用来命名JPA持久模型类的元模型类的约定。Model_是的元模型Model,它提供可查询字段的名称及其类型。

2020-12-03