Ich arbeite an JPA mit toplink und möchte Entity-Klasse erstellen. Ich möchte die PK von Tabelle A (Alias) als Teil des Fremdschlüssels im zusammengesetzten Primärschlüssel (Nachricht) von Tabelle B verwenden. Ich habe folgende Struktur für die Entität erstellt. Aber ich sehe die Join-Spalte ist null
und zeigen null
in der Tabelle.Wie erstellt man einen zusammengesetzten Primärschlüssel, der aus einem PK einer anderen Tabelle als 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;
}
}
Tabelle:
| ALIASNAME | varchar(255) | NO | PRI | NULL | |
| MESSAGESUBJECT | varchar(255) | NO | PRI | NULL | |
| Alias_Name | varchar(255) | YES | MUL | NULL | |
+----------------+--------------+------+-----+---------+-------+
| ALIASNAME | varchar (255) | NEIN | PRI | NULL | | | MESSAGESUBJECT | varchar (255) | NEIN | PRI | NULL | | | Alias_Name | varchar (255) | JA | MUL | NULL | | + ---------------- + -------------- + ------ + ----- + --- ------ + ------- + – Abhash
Es gibt eine andere Implementierung von toplink und eclipselink. Ich habe Eclipselink JPA-Implementierung verwendet und mein Problem wird gelöst. – Abhash