Hibernate注释继承OneToMany Placement

时间:2012-04-21 17:11:38

标签: java inheritance hibernate-annotations

需要帮助在Hibernate继承中实现这个场景
牛和狗继承动物类, 婆牛和狗都有“后代”名单
牛有额外的清单 - 每月疫苗日期
这个Hibernate表示法是否正确?
将OneToMany疫苗列表放在Cow类上是否正确
或者它需要在动物类?
谢谢!

@Entity
@Table(name = "animals")
@DiscriminatorColumn(name="animal_type")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public abstract class Animal{

 @Id
 @Column(name = "animalId" ,nullable = false)
 private String animalId;

 @OneToMany(cascade=CascadeType.ALL)
 private List<Animal> offsprings = new ArrayList<Animal>();

public List<Animal> getOffsprings() {
    return offsprings;
}

...
}

@Entity
@DiscriminatorValue("COW")
public class Coe extends Animal {

@OneToMany(cascade=CascadeType.ALL)
 **private List<Vaccine> vaccine = new ArrayList<Vaccine>();**

}

@Entity
@DiscriminatorValue("DOG")
public class Dog extends Animal {
    private chipId;
}

1 个答案:

答案 0 :(得分:1)

你需要把它放在牛类中,就像你的情况一样,它是奶牛特有的属性,而不是狗。

但是,两个实体都存储在一个表中。这意味着在DB中,没有什么可以防止狗接种疫苗。

如果你有更多的属性,如疫苗,属于牛而不是狗,我会重新考虑我的继承策略。