2016-08-31 19 views
1

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 |  | 
+----------------+--------------+------+-----+---------+----‌​---+ 
+0

| ALIASNAME | varchar (255) | 아니요 | PRI | NULL | | | MESSAGESUBJECT | varchar (255) | 아니요 | PRI | NULL | | | 별칭 _ 이름 | varchar (255) | 예 | MUL | NULL | | + ---------------- + -------------- + ------ + ----- + --- ------ + ------- + – Abhash

+0

다른 상위 구현 및 eclipselink가 있습니다. eclipselink JPA 구현을 사용하여 문제가 해결되었습니다. – Abhash

답변

0

나에게 주석 주문 문제 같은데, 첫째 @MapsId했습니다. 참고로보십시오 http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#d0e4865

+0

답장을 보내 주셔서 감사합니다. 나는 최대 절전 모드가 아닌 jpa를 사용하고 있음을 이해합니다. 그리고 mapsid를 사용하면 FK와 동일한 하나의 여분의 열이 생기고 테이블에 값을 입력하는 동안 Null 값이 입력됩니다. 알 수 있듯이 두 개의 별칭 이름 열이 있습니다. 나는 그것을 가두려고했지만 여전히 도움이되지 않는다. – Abhash

+0

내 생각은 먼저 수행하는 조인 칼럼과 mapsId에 관한 것이었다. 미안해, 너를 도울 수 없어. –