gpt4 book ai didi

java - Hibernate注解继承OneToMany Placement

转载 作者:行者123 更新时间:2023-12-01 15:25:14 25 4
gpt4 key购买 nike

需要帮助在 Hibernate 继承中实现此场景

Cow 和 Dog 继承 Animal 类,
牛和狗都有“后代”名单
牛有额外的 list - 每月疫苗接种日期
这个 Hibernate 表示方式正确吗?
将OneToMany Vaccine列表放在Cow类上是否正确
或者它需要在 Animal 类上?
谢谢!

@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;
}

最佳答案

您需要将其放入“cow”类中,因为在您的情况下,它是特定于牛而不是狗的属性。

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

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

关于java - Hibernate注解继承OneToMany Placement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10261207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com