У меня есть объект типа TableC, который сопоставлен с объектом типа TableB1. Объект типа TableB1 сопоставляется с Объектом типа TableA1 (TableC -> TableB1 -> TableA1).
Когда я пытаюсь загрузить объект TableC по Id, используя пружинные данные JPA (из базы данных), Это дает мне следующую ошибку: oheinternal.DefaultLoadEventListener: HHH000327: Ошибка при выполнении команды загрузки: org.hibernate.PropertyAccessException. Не удалось установить значение поля [TableA2 @ 5e49a0b5] с помощью отражения: [class TableB1.tableA1] установщик TableB1.tableA1. Объект TableC отображается на объект типа TableB1, который отображается на объект типа TableA1. Hibernate пытается загрузить объект типа TableA2, несмотря на наличие дискриминатора. Я использую дискриминатор, и я должен получить соответствующий объект Loaded с соответствующим классом. Что-то не хватает с моими отображениями выше? ...
@Table(name = "tableA")
@DiscriminatorColumn(name = "discriminator", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorOptions(force = true)
public abstract class TableA {
/** source code */
}
@Entity
@DiscriminatorValue("1")
public class TableA1 extends TableA {
/** source code */
}
@Entity
@DiscriminatorValue(value="2")
public class TableA2 extends TableA {
/** source code */
}
@Entity
@Table(name = "tableB")
@DiscriminatorColumn(name = "discriminator", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorOptions(force = true)
public abstract class TableB {
/** source code */
}
@Entity
@DiscriminatorValue("1")
public class TableB1 extends TableB {
@ManyToOne
@JoinColumn(name = "item_id")
private TableA1 tableA1;
/** source code */
}
@Entity
@DiscriminatorValue(value="2")
public class TableB2 extends TableB {
@ManyToOne()
@JoinColumn(name = "tableA_id")
private TableA2 tableA2;
/** source code */
}
@Entity
@Table( schema = "public", name = "TableC")
public class TableC {
@ManyToOne
@JoinColumn(name="tableA1_id")
private TableB tablB;
/**source code */
}```