java - JPA/Metamodel : Strange (inconsistent ? ) Sun Docs 中的示例

标签 java jpa jpa-2.0 criteria-api metamodel

Sun Online resources ,他们提供了关于 Criteria/Metamodel API 用法的子示例,但据我了解 Java,它似乎无法工作:

CriteriaQuery<Pet> cq = cb.createQuery(Pet.class);
Metamodel m = em.getMetamodel();
EntityType<Pet> Pet_ = m.entity(Pet.class);
EntityType<Owner> Owner_ = m.entity(Owner.class);

Root<Pet> pet = cq.from(Pet.class);
Join<Owner, Address> address = cq.join(**Pet_.owners**).join(**Owner_.addresses**);

Pet_ 是类 EntityType实例其中定义任何名为ownersaddresses 的属性。

他们确实为元模型定义了名为 Pet_Owner_ 的类,但是他们在此处的输入会与变量名产生冲突……我说得对吗?

__

(这个问题也和这个one有关)

最佳答案

这个例子不正确,作者将规范的静态元模型类(生成的)与通过元模型 API 获得的类混合在一起。他们应该使用弱类型 API 或强类型生成的类,而不是同时使用两者。在他们的例子中,Pet_(这是一个令人难以置信的错误命名选择并且具有误导性)确实没有任何 owners 属性。 这应该报告,这部分教程具有误导性和错误性。

另见

关于java - JPA/Metamodel : Strange (inconsistent ? ) Sun Docs 中的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3879743/

相关文章:

hibernate - 常量作为 NamedQueries 中的参数是一个好习惯吗?

java - 多个事务不是应该与 em.getTransaction() 一致吗?

java - JPA 连接运算符

java - 在 VSCode 的 Microsoft Debugger for Java 扩展中,是否可以使其识别 Lombok?

java - 在 O(n) 时间内找到数组中的重复元素

java - Hibernate 日志脏实体属性?

java - getFirstResult() 返回 0

java - 一个对象能知道它的方法是从哪个对象调用的吗?

java - EnumSet 的真正含义是什么?

java - 在 JPA Criteria Builder 中按 Oracle 函数排序