Je travaille sur JPA avec TopLink et que vous souhaitez créer la classe entité. Je veux utiliser le tableau A de (alias) PK dans le cadre de clé étrangère dans la clé primaire composite Tableau B (message). J'ai créé la structure suivante pour l'entité. Mais je vois la colonne de jointure est null
et montrer null
dans le tableau.Comment faire une clé primaire composite qui se compose d'un PK d'autre table que FK
@Embeddable
public class MessageEntityPK implements Serializable {
private static final long serialVersionUID = -229800894330529492L;
private String messageSubject;
private String aliasName;
public String getMessageSubject() {
return messageSubject;
}
public String getAliasName() {
return aliasName;
}
public MessageEntityPK() {
}
public MessageEntityPK(String msgSubject, String aliasName) {
this.aliasName = aliasName;
this.messageSubject = msgSubject;
}
}
@Entity
@Table(name = "ALIAS_ENTITY")
public class AliasEntity {
@Id
private String aliasName;
private String aliasPath;
public String getAliasName() {
return aliasName;
}
public void setAliasName(String aliasName) {
this.aliasName = aliasName;
}
public String getAliasPath() {
return aliasPath;
}
public void setAliasPath(String aliasPath) {
this.aliasPath = aliasPath;
}
//hashCode and equals Function.
}
@Entity
public class MessageEntity {
@EmbeddedId
private MessageEntityPK messageEntityID;
@ManyToOne
@MapsId("aliasName")
@JoinColumn(name = "Alias_Name", referencedColumnName = "aliasName")
private AliasEntity aliasEntity;
public MessageEntityPK getMessageEntityID() {
return messageEntityID;
}
public void setMessageEntityID(MessageEntityPK messageEntityID) {
this.messageEntityID = messageEntityID;
}
public AliasEntity getAliasEntity() {
return aliasEntity;
}
public void setAliasEntity(AliasEntity aliasEntity) {
this.aliasEntity = aliasEntity;
}
}
Tableau:
| ALIASNAME | varchar(255) | NO | PRI | NULL | |
| MESSAGESUBJECT | varchar(255) | NO | PRI | NULL | |
| Alias_Name | varchar(255) | YES | MUL | NULL | |
+----------------+--------------+------+-----+---------+-------+
| ALIASNAME | varchar (255) | NO | PRI | NULL | | | MESSAGESUBJECT | varchar (255) | NO | PRI | NULL | | | Alias_Nom | varchar (255) | OUI | MUL | NULL | | + -------------- + + ---------------- ------ + ----- + --- ------ + ------- + – Abhash
Il y a une autre implémentation de TopLink et EclipseLink. J'ai utilisé l'implémentation JPA eclipselink et mon problème est résolu. – Abhash