У меня есть 3 сущности:
@Data
@AllArgsConstructor
@Entity
@Table(name = "beneficiary")
@Inheritance
@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING, name = "type")
public abstract class Beneficiary {
public Beneficiary() {}
@Id private String id;
private String description;
}
@Data
@Entity
@DiscriminatorValue("company")
@EqualsAndHashCode(callSuper = true)
public class BeneficiaryCompany extends Beneficiary {
public BeneficiaryCompany() {
super();
}
public BeneficiaryCompany(String id, String description) {
super(id, description);
}
}
@Data
@Entity
@DiscriminatorValue("person")
@EqualsAndHashCode(callSuper = true)
public class BeneficiaryPerson extends Beneficiary {
public BeneficiaryPerson() {}
public BeneficiaryPerson(String id, String description) {
super(id, description);
}
}
В другом классе я хочу иметь 2 отдельные коллекции:
@Data
@AllArgsConstructor
@Entity
@Table(name = "transaction")
public class Transaction {
public Transaction() {}
@Id private String id;
private String description;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, targetEntity = BeneficiaryCompany.class)
@JoinColumn(name = "transaction_id", nullable = false)
private Set<BeneficiaryCompany> beneficiaryCompanies;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true,targetEntity = BeneficiaryPerson.class)
@JoinColumn(name = "transaction_id", nullable = false)
private Set<BeneficiaryPerson> beneficiaryPeople;
}
Проблема в том, что каждый бенефициар был доставлен в компании-бенефициары, и бенефициар. Люди в отладчике говорят мне, что:
Невозможно оценить выражение Метода
исключение 'org.hibernate.WrongClassException'.
Записи базы данных выглядят нормально (DiscriminatorColumn был создан). В чем может быть проблема? Почему BeneficiaryCompanies содержит объекты BeneficiaryPerson?
@ EDIT:
Для извлечения записей я использую репозитории SpringData JPA.