作者:树缝中间_324 | 来源:互联网 | 2023-01-26 08:48
借助于Hibernate强大的ORMapping能力,通过discriminator可以将一颗继承树映射到一个表中,通过discriminator确定具体映射的子类。实现时,映射文
借助于Hibernate强大的O/R Mapping能力,通过discriminator可以将一颗继承树映射到一个表中,通过discriminator确定具体映射的子类。
实现时,映射文件如下:
DTO映射类的定义如下:
但是在运行过程中,发现getType()总是返回null,说明type属性没有被设置。
解决方法:
1、采用在子类中覆盖getType()方法,根据类型返回值。
从代码上比较清晰,但是体现不出discriminator的功能。
2、实现基类的getType()方法,根据不同类型返回不同的值。
本质上与第一种方法一样。
3、采用Hibernate映射的方法。
修改映射文件如下:
这种方法利用discriminator的强大功能。
最后,我感觉这个应该是Hibernate的Bug,这种每个subclass都要拷贝这段属性设置,很愚蠢。