Я пытаюсь сопоставить ассоциацию один-ко-многим к лицу, которое карта с @Inheritance(strategy=InheritanceType.JOINED)
но у меня исключение проверки, когда мое приложение загрузки:JPA наследование и двунаправленная OneToMany отношение в детстве
Внутренняя Исключение: Исключение [EclipseLink-7250] (Затмение Постоянство Услуги 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.ValidationException Исключение
Описание: [класс model.item.weapon.WeaponStat ] использует не-объект [класс item.weapon.Weapon] как целевой объект в отношение атрибут [полевое оружие].
Вот базовый класс:
@Entity
@Table(name = "ITEMS")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "SYSTYPE", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue(value = "0")
public class Item implements Serializable {...
Класс Weapon
, который наследует от Item
:
@Entity
@Table(name = "WEAPONS")
@PrimaryKeyJoinColumn(name = "ITEM_ID")
@DiscriminatorValue(value = "3")
public class Weapon extends Item {...
Weapon
содержит атрибут OneToMany
:
@OneToMany(mappedBy = "weapon")
private List<WeaponStat> stats;
И WeaponStat
:
@Entity
@Table(name = "WEAPON_STATS")
public class WeaponStat implements Serializable {...
[...code...]
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "WEAPON_ID")
private Weapon weapon;
[...code...]
Кто-то есть идея?
Правильно ли указано оружие со всеми другими объектами в файле persistence.xml? Является ли он аннотированным с правой javax.persistence.Entity аннотации? –
Я фактически использую ' false exclude-unlisted-classes>' в моем файле persistence.xml. Если я вручную укажу все объекты с ' ... ', то проблема будет такой же. Да импорт неправильный. –
user5343250
Вы не можете сделать это частное оружие; => личное оружие предметов; Я знаю, что он не всегда практичен, но имеет разные члены на Оружие, чем на Item, нарушает LSP https://en.wikipedia.org/wiki/Liskov_substitution_principle –