Java-JPA / Metamodel:Sun Docs中的奇怪(不一致?)示例
作者:互联网
在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
的实例,该类未定义任何名为所有者或地址的属性.
他们确实为元模型定义了名为Pet_和Owner_的类,但是在此处进行导入将与变量名产生冲突……是吗?
__
(问题也与此one有关)
解决方法:
此示例是错误的,作者正在将规范化的静态元模型类(生成的)与通过Metamodel API获得的类混合使用.他们应该使用弱类型的API或严格类型的生成的类,而不是一起使用.在他们的情况下,Pet_(这是一个令人难以置信的错误命名选择,并且会引起误解)确实没有任何所有者属性.
这应该报告,这部分教程是误导和错误的.
也可以看看
> Dynamic, typesafe queries in JPA 2.0
标签:criteria-api,metamodel,java,jpa,jpa-2-0 来源: https://codeday.me/bug/20191010/1886875.html