首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

hibernate 高手来帮忙看一下,关于继承映射之后的查询有关问题

2014-01-03 
hibernate 高手来帮忙看一下,关于继承映射之后的查询问题?@Entity@Inheritance(strategy InheritanceTyp

hibernate 高手来帮忙看一下,关于继承映射之后的查询问题
?


@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue(value = "Pet")
public class Pet{
     private String type = this.getClass().getSimpleName();
}


@Entity
@DiscriminatorValue(value = "Dog ")
public class Dog extends Pet{
     private String asdf;
}


@Entity
public class Master{
    private Pet  myPet;
}



我数据库表里有一条狗狗的数据。

在 Pet表里有一行数据 , type 字段的值是“Dog“
在 Dog表里有一行数据 , asdf字段的值是”sds“.

问题重点:
取到Master的实例后我把Master的 myPet强转为 Dog类型 的时候出错了。
经过调试发现原因是:Master的myPet属性值是 Pet类的实例,而不是 Dog类的实例;
怎样可以实现让hibernate根据表里的type字段给myPet属性赋值对应的子类实例(例如这里我就希望hibernate赋值给myPet属性的值是Dog类的实例),而不是只根据属性的声明类型来赋值。







[解决办法]
private String type = this.getClass().getSimpleName();这样获取的必然是当前类的名字,父类的要getSuperclass().getSimpleName()才行,子类中要重写type

热点排行