JPA / Metamodel:Sun Docs中的奇怪(不一致?)示例

时间:2010-10-07 08:03:41

标签: 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实例定义名为owners或{{1}的任何属性}。

他们为元模型定义了名为addressesPet_的类,但是这里的导入会与变量名称产生冲突......我是对的吗?

__

(问题也与此one

有关

1 个答案:

答案 0 :(得分:12)

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

另见

相关问题