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