12

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,它没有定义任何名为ownersor的属性addresses

他们确实为元模型定义了名为Pet_和的类Owner_,但是在这里导入它们会与变量名产生冲突……我说得对吗?

__

(这个问题也与这个有关

4

1 回答 1

14

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

也可以看看

于 2010-10-07T09:41:34.833 回答