今天在开发时发现一个问题
在查询一张表的 count 的时候,居然返回了2个值,Hibernate报错说不止一个结果。
大吃一惊,不过是一个单表查询而已,出现了这样的问题。后来查找资料和项目发现,项目里用父类A,子类B。
A和B都映射了同一张表。
这样查询就出问题了,如果查询父类,将返回2个结果集,所以对于unique方式的查询,一律报错。
但是有意思的是,如果查询子类,则不会有问题。
解决方法,在映射xml中就是配置文件中polymorphism属性的设置问题。polymorphism默认值为 implicit 是隐式的实现多态。这种方式会导致查询超类的时候,会把子类的结果集也返回回来。
所以在父子类的映射文件中,将polymorphism属性设置为explicit。也就是显示的实现多态。
问题解决

本文介绍了一个关于Hibernate框架中多态查询的问题。当父类和子类映射同一张表时,默认情况下查询父类可能会返回多个结果,导致unique查询失败。文章详细解释了原因,并给出了通过设置polymorphism属性为explicit来解决此问题的方法。
177

被折叠的 条评论
为什么被折叠?



