TOplink를 사용하여 JPA에서 작업 중이며 Entity 클래스를 만들고 싶습니다. 표 B의 복합 기본 키 (메시지)에서 외래 키의 일부로 표 A (별명) PK를 사용하려고합니다. 엔티티에 대해 다음과 같은 구조를 만들었습니다. 하지만 조인 열이 null
이고 테이블에 null
이 표시됩니다.다른 테이블의 PK로 구성된 복합 기본 키를 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;
}
}
테이블 :
| ALIASNAME | varchar(255) | NO | PRI | NULL | |
| MESSAGESUBJECT | varchar(255) | NO | PRI | NULL | |
| Alias_Name | varchar(255) | YES | MUL | NULL | |
+----------------+--------------+------+-----+---------+-------+
| ALIASNAME | varchar (255) | 아니요 | PRI | NULL | | | MESSAGESUBJECT | varchar (255) | 아니요 | PRI | NULL | | | 별칭 _ 이름 | varchar (255) | 예 | MUL | NULL | | + ---------------- + -------------- + ------ + ----- + --- ------ + ------- + – Abhash
다른 상위 구현 및 eclipselink가 있습니다. eclipselink JPA 구현을 사용하여 문제가 해결되었습니다. – Abhash