私はトップリンクでJPAを作っていて、エンティティクラスを作りたいと思っています。 テーブルBの複合主キー(メッセージ)の外部キーの一部としてテーブルA(エイリアス)PKを使用したいと思います。 私はエンティティのために以下の構造を作成しました。 しかし、私は結合の列はnull
と表示null
テーブルに表示されます。FKとして他のテーブルのPKで構成されるコンポジットプライマリキーを作る方法
@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;
}
}
表:
| 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_Name | varchar(255)|はいMUL | NULL | | + ---------------- + -------------- + ------ + ----- + --- ------ + ------- + – Abhash
トップリンクとeclipselinkの実装が異なります。私はeclipselink JPAの実装を使用し、私の問題は解決しています。 – Abhash