0

Hibernateの継承でこのシナリオを実装するための支援が必要

です牛と犬は動物クラスを継承 しています、
牛と犬の両方に「子孫」リスト があります
牛には追加のリストがあります-毎月のワクチンの日付
このHibernateの表現は正しいですか?
OneToManyワクチンリストを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;
}
4

1 に答える 1

1

あなたの場合、それは犬ではなく牛に固有の特性であるため、牛のクラスに入れる必要があります。

ただし、両方のエンティティは1つのテーブルに格納されます。これは、DB内では、犬がワクチンを接種することを妨げるものは何もないことを意味します。

ワクチンのように犬ではなく牛に属する特性がもっとある場合は、相続戦略を再考します。

于 2012-04-21T18:33:17.083 に答える