I am working on JPA with toplink and want to create Entity class.
I want to use Table A's (alias) PK as part of foreign key in Table B's composite primary key (message).
I have created following structure for the Entity.
But i see the join column is null and show null in table.
@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;
}
}
Table:
| ALIASNAME | varchar(255) | NO | PRI | NULL | |
| MESSAGESUBJECT | varchar(255) | NO | PRI | NULL | |
| Alias_Name | varchar(255) | YES | MUL | NULL | |
+----------------+--------------+------+-----+---------+-------+
Seems to me annotation ordering matter, put @MapsId first. Take a look to the reference http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#d0e4865