有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在hibernate中重写子类中的集合元素类型?

例如,老虎是猫,但老虎不会生任何猫儿:

@Entity
class Cat {
    @OneToMany(targetEntity=Cat.class)
    Set<Cat> getChildren() { ... }
}

老虎:

@Entity
class Tiger extends Cat {
    @OneToMany(targetEntity=Tiger.class)
    Set<Cat> getChildren() { ... }
}

问题是,Hibernate不允许这样的定义,比如错误:

Repeated column in mapping for entity: com.bee32.plover.orm.Tiger column: parent (should be mapped with insert="false" update="false")

知道吗


共 (1) 个答案

  1. # 1 楼答案

    我们通过提供一个XML文件(根元素:…)来实现,但你为什么一开始就需要它呢

    通常,您会限制Tiger类只接受同一类的子类,因此getChildren()将返回一组Tiger

    在数据库中,您将有一个鉴别器来定义数据集的实体类。因此,如果将鉴别器“CAT”(或类似)指定为“TIGER”的子数据集,则无论如何在加载关联时都会出现异常(因为实体将属于Cat类,不能强制转换为Tiger