Hibernate: OneTomany и OneToone для двух классов в single_table_strategyJAVA

Программисты JAVA общаются здесь
Anonymous
Hibernate: OneTomany и OneToone для двух классов в single_table_strategy

Сообщение Anonymous »

У меня есть родительский класс: человек и два класса ребенка: Hunter и полицейский . У Hunter может быть несколько собак , а полицейский может иметь только одну собаку . Это однонаправленная отношения, у собаки только объект имеет атрибут :

Код: Выделить всё

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Person {
private String name;
< /code>
и детские классы: < /p>
@Entity
public class Hunter {
private String forest;

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "hunter_id", referencedColumnName = "id")
private Set dogs;

< /code>
@Entity
public class Policeman {
private String city;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "dog_id")
private Dog dog;
< /code>
It generates table structure like this:
[b]person[/b]
id, name, forest, city, dog_id, person_type
< /code>
[b]dog[/b]:
id, breed, hunter_id
< /code>
So essentially because the Policeman
имеет только один день, идентификатор собаки FK помещается лично таблицей. Это было бы нулевым для рядов, которые относятся к охотнику .
И поскольку у охотника есть несколько собак, идентификатор охотника ставится в виде FK в собаке таблица. /> Тем не менее, мне было интересно, является ли это правильным подходом, и было бы лучше просто иметь Person_id fk в таблице собаки и убедиться, что у полицейского есть только одна собака в классах обслуживания?

Подробнее здесь: https://stackoverflow.com/questions/795 ... e-strategy

Вернуться в «JAVA»