JPA @OneToOne ведет к SQLSyntaxErrorException - PullRequest
0 голосов
/ 03 июня 2019

Первая сущность:

@Entity
@Table(name = "SCOL_INSCRIPTION_ETUDIANT")
public class ScolInscriptionEtudiant implements Serializable {

    @EmbeddedId
    ScolInscriptionEtudiantId id;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(referencedColumnName = "FSPN_KEY")
    private ScolFormationSpecialisation scolFormationSpecialisation;

    @Column(name = "FSPN_KEY")
    private Long fspnkey;

Вторая сущность:

@Entity
@Table(name = "SCOLARITE.SCOL_FORMATION_SPECIALISATION")
public class ScolFormationSpecialisation {

 @Id
 @Column(name = "FSPN_KEY")
 private Long fspnkey;

 @OneToOne(mappedBy = "scolFormationSpecialisation")
 private ScolInscriptionEtudiant scolInscriptionEtudiant;

Эти две таблицы имеют один и тот же столбец "fspnkey", который я хочу использовать для объединения данных.

Repository:

public interface StudentDetailRepository extends CrudRepository<ScolInscriptionEtudiant, Long> {
    List<ScolInscriptionEtudiant> findAllByEtudnumero(String etudnumero);

При вызове хранилища генерируется эта ошибка:

Caused by: oracle.jdbc.OracleDatabaseException: ORA-00904: "SCOLINSCRI0_"."SCOL_FORMATION_SPECIALISATION_FSPN_KEY" : invalid identifier

Я следую этому руководству: https://www.baeldung.com/jpa-one-to-one

Вы видите, что не так в этом коде?

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Вам не нужен fspnkey в первом объекте. И измените свой @JoinColumn на

@JoinColumn(name = "scolFormationSpecialisation_id", referencedColumnName = "FSPN_KEY")
0 голосов
/ 03 июня 2019

В ваших значениях @JoinColumn вам также нужно указать свойство "name", это фактически указывает на уникальный столбец в ScolFormationSpecialisation. Смотрите пример в ссылке. Он имеет имя = "address_id" в пользовательской таблице указывает на "id" в адресной таблице.

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