Hibernate аннотация - уточнение по унаследованию - PullRequest
0 голосов
/ 15 марта 2012


У меня есть несколько вопросов о гибернации с наследованием (одна таблица),
Может ли внешний ключ находиться в абстрактном классе? - что делать, если один из детей не использует его?
Должны ли члены транспортного средства быть защищены?
Пожалуйста, поделитесь любыми другими мыслями!
Спасибо!

Вот пример:

@Entity
@Table(name = "vehicles")
@DiscriminatorColumn(name="type")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public abstract class Vehicle {

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

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

public List<EmissionInspection> getInsepections() {
    return insepections;
}

...
}

@Entity
@DiscriminatorValue("POST_OFFICE_TRUCK")
@Table(name = "truck")
public class PSTruck extends Vehicle {

}

@Entity
@DiscriminatorValue("TRUCK")
@Table(name = "truck")
public class Truck extends Vehicle {

    private insuranceDate;
}

@Entity
@DiscriminatorValue("PRIVATE_CAR")
@Table(name = "truck")
public class PrivateCar extends Vehicle {

    private insuranceDate;      
}

1 Ответ

1 голос
/ 15 марта 2012

«Может ли внешний ключ быть в абстрактном классе?» -> да

"если один из детей не использует его?" -> тогда это нулевая ссылка там

«Должны ли члены транспортного средства быть защищены?» -> если у вас есть общедоступный метод получения / установки нет , в противном случае, если вам нужно получить / установить без публичного получения / установки, тогда да

имя таблицы абстрактного класса и других классов различны. Обычно наследующие классы не имеют @Table аннотации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...