J'utilise eclipselink 2.5.1.PK composite EclipseLink avec FK
Disons que j'ai ces deux classes.
JAVA
@Entity
public class Car implements Serializable {
@EmbeddedId
protected CarPK carPK;
private String color;
@ManyToOne(fetch = FetchType.LAZY)
private Manufacturor manufacturor;
//constructors, getters & setters...
}
@Embeddable
public class CarPK implements Serializable {
@NotNull
private int idManufacturor;
@Temporal(javax.persistence.TemporalType.DATE)
private Date date;
//constructors, getters & setters...
}
voiture a une clé primaire composite (idManufacturor et la date) et idManufacturor est également une clé étrangère faisant référence à la classe manufacturor.
Je rencontre un problème avec le mappage. EclipseLink comprend l'objet manufacturor comme une colonne dans ma table Car.
Erreur
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: invalid column name : 'manufacturor'.
Je sais que le problème sera résolu si j'ajoute une colonne FK manufacturor mais il serait répéter.
N'hésitez pas à demander une précision si je ne suis pas assez clair.
Nous vous remercions de votre aide.
Merci pour votre aide, j'ai essayé d'ajouter l'annotation mais j'ai cette erreur: Exception Description: Plusieurs mappages inscriptibles existent pour le champ [CAR.IDMANUFACTUROR]. Un seul peut être défini comme accessible en écriture, tous les autres doivent être spécifiés en lecture seule. – Knriano
Ajoutez updatable = false et insertable = false à l'anotation JoinColumn. – tak3shi
Vous venez de sauver ma journée, merci :) – Knriano