Я работаю над JPA с помощью toplink и хочу создать класс Entity. Я хочу использовать PK таблицы A (псевдоним) как часть внешнего ключа в составном первичном ключе (сообщение) таблицы B. Я создал следующую структуру для Entity. Но я вижу колонку соединения null
и показать null
в таблице.Как создать составной первичный ключ, который состоит из ПК другой таблицы, как 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 | | | Alias_Name | varchar (255) | ДА | MUL | NULL | | + ---------------- + -------------- + ------ + ----- + --- ------ + ------- + – Abhash
Существует другая реализация toplink и eclipselink. Я использовал реализацию Eclipselink JPA, и моя проблема решена. – Abhash