环境:hibernate实现的jpa.
已知两个实体类ProductInfo(产品类)和ProductStyle(样式类),其中ProductInfo与ProductStyle是一对多的关系,即ProductStyle类中有属性ProductInfo。
现在要通过ProductStyle查询ProductInfo对象,可以有如下方法:
第一种方案:导航
select ps.productInfo from ProductStyle ps第二种是通过两表链接,通过where作为判断条件:select info from ProductInfo info, ProductStyle ps where info.id=ps.productInfo.id第三种方案是通过joinselect info from ProductInfo info join ProductStyle ps on info.id=ps.productInfo.id但是第三种方法会失败,提示ava.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException错误。
虽然第二种方法与第三种方法显得累赘,也不可取,但既然遇到了此问题就希望搞个明白.我觉得第二种方法与第三种方法的思路是一样的,只是将where作为两表链接换成join为何就不行了呢?是不是Hibernate在处理join语句时进行了额外的处理?
麻烦大家看下,谢谢!