#java #jpa
Вопрос:
У меня есть отношения между двумя сущностями, я считаю, что у меня все хорошо, но когда я пытаюсь запустить свое приложение, Payara запускает эту ошибку:
Вызвано: Исключение [EclipseLink-7154] (Службы сохранения Eclipse — 2.7.4.payara-p2): организация.eclipse.сохранение.исключения.Описание исключения исключения ValidationException: Атрибут [retenciones] в классе сущностей [класс комп.модель.ChequePropio] имеет сопоставленное значение [chequepropio], которое не существует в классе сущностей-владельцев [класс комп.модель.RetencionChp]. Если класс сущности-владельца является классом @MappedSuperclass, это недопустимо, и ваш атрибут должен ссылаться на правильный подкласс.
Здесь одна из сущностей, вызывающих проблему:
@Entity @Table(name = "chequepropio", uniqueConstraints = { @UniqueConstraint(name = "ukchequepropio", columnNames = {"idbanco", "idempresa", "idtipo", "numero"})}) public class ChequePropio implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @OneToMany(fetch = FetchType.LAZY,mappedBy = "chequepropio") private Listlt;RetencionChpgt; retenciones; public int getId() { return id; } public void setId(int id) { this.id = id; } }
Другие организации:
@Entity @Table(name = "retencionchp") public class RetencionChp implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "idcheque", insertable = true, updatable = true) private ChequePropio chequePropio; public int getId() { return id; } public void setId(int id) { this.id = id; } public ChequePropio getChequePropio() { return chequePropio; } public void setChequePropio(ChequePropio chequePropio) { this.chequePropio = chequePropio; } }
Я не вижу никакой ошибки в отношениях, кто-нибудь мог бы сказать мне, что не так?
Заранее спасибо! Фернандо
Ответ №1:
Ошибка объясняется сама собой:
Атрибут [retenciones] в классе сущностей [класс комп.модель.ChequePropio] имеет сопоставленное значение [chequepropio], которое не существует в классе сущностей-владельцев
Обратите внимание на ключевое chequepropio
слово . У вас нет chequepropio
собственности в RetencionChp
. У тебя есть chequePropio
вместо этого. Обратите внимание на заглавные P
буквы . Следующее должно решить эту проблему ( mappedBy = "chequePropio")
).
@Entity @Table(name = "chequepropio", uniqueConstraints = { @UniqueConstraint(name = "ukchequepropio", columnNames = {"idbanco", "idempresa", "idtipo", "numero"})}) public class ChequePropio implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @OneToMany(fetch = FetchType.LAZY,mappedBy = "chequePropio") private Listlt;RetencionChpgt; retenciones; public int getId() { return id; } public void setId(int id) { this.id = id; } }