第一个实体:
@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”,我想用它们来联接数据。
存储库:
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
您看到这段代码有什么问题吗?
答案 0 :(得分:0)
在@JoinColumn值中,您还需要提供“ name”属性,这实际上指向ScolFormationSpecialisation中的唯一列。 请参阅链接中的示例。它在用户表中的名称=“ address_id”指向地址表中的“ id”。
答案 1 :(得分:0)
您在第一个实体中不需要fspnkey。并将您@JoinColumn更改为
@JoinColumn(name = "scolFormationSpecialisation_id", referencedColumnName = "FSPN_KEY")