org.hibernate.PropertyAccessException при попытке загрузить мои объекты из базы данных с использованием отношения @OneToMany - PullRequest
0 голосов
/ 17 октября 2019

У меня есть объект типа 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 */

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