【发布时间】:2018-02-27 02:22:10
【问题描述】:
I have a table structure like that :-
@Entity
@Table(name = "Load_Container_Tray")
public class LoadContainerTray {
@EmbeddedId
private LoadContainerTrayPK loadContainerTrayPK;
@MapsId("loadContainerPK")
@JoinColumns({
@JoinColumn(name = "dest_ebu_nbr", referencedColumnName = "dest_ebu_nbr"),
@JoinColumn(name = "outbound_load_id", referencedColumnName = "outbound_load_id"),
@JoinColumn(name = "dest_ebu_cntry_code", referencedColumnName = "dest_ebu_cntry_code"),
@JoinColumn(name = "ctnr_trackg_id", referencedColumnName = "ctnr_trackg_id") })
@ManyToOne
private LoadContainer loadcontainer;
}
@Embeddable 公共类 LoadContainerTrayPK 实现可序列化 {
private static final long serialVersionUID = 3392075534159950245L;
@Basic
private LoadContainerPK loadContainerPK;
@Column(name = "load_unit_id", columnDefinition = "char(32)")
private String loadUnitId;
}
@Entity
@Table(name = "load_container")
public class LoadContainer {
@EmbeddedId
private LoadContainerPK loadContainerPK;
@MapsId("loadDestinationPK")
@JoinColumns({
@JoinColumn(name = "dest_ebu_nbr", referencedColumnName = "dest_ebu_nbr"),
@JoinColumn(name = "outbound_load_id", referencedColumnName = "outbound_load_id"),
@JoinColumn(name = "dest_ebu_cntry_code", referencedColumnName = "dest_ebu_cntry_code") })
@ManyToOne
private LoadDestination loadDestination;
@Column(name = "row_nbr")
private short rowNumber;
}
@Embeddable
public class LoadContainerPK implements Serializable {
private static final long serialVersionUID = 3392075534159950245L;
@Basic
private LoadDestinationPK loadDestinationPK;
@Column(name = "ctnr_trackg_id")
private String containerTrackingId;
}
公共类 LoadDestination {
@EmbeddedId
private LoadDestinationPK loadDestinationPK;
@MapsId("outboundLoadId")
@JoinColumn(name = "outbound_load_id", referencedColumnName = "outbound_load_id")
@ManyToOne
private OutboundLoad outboundLoad;
}
@Embeddable
public class LoadDestinationPK implements Serializable {
private static final long serialVersionUID = -3548089581858405303L;
@Column(name = "outbound_load_id")
private String outboundLoadId;
@Column(name = "dest_ebu_nbr")
private Integer destinationId;
@Column(name = "dest_ebu_cntry_code")
private String destEbuCntryCode;
}
@Entity
@Table(name = "outbound_load")
public class OutboundLoad {
@Id
@Column(name = "outbound_load_id", columnDefinition = "char(30)")
private String outboundLoadId;
@Column(name = "load_id")
private int loadId;
}
当我尝试在 TOMEE 服务器上部署应用程序时,我收到此错误:-
" org.apache.openejb.OpenEJBException: org.apache.openejb.OpenEJBRuntimeException: org.hibernate.AssertionFailure: 映射@MapsId 时引用实体上的意外嵌套组件:com.walmart.move.nim.outdoc.entity .LoadContainer: org.hibernate.AssertionFailure: 映射@MapsId: com.walmart.move.nim.outdoc.entity.LoadContainer 时引用实体上的意外嵌套组件。
谁能帮我解决这个问题。
【问题讨论】:
-
能否提供
OutboundLoad类 -
@osamayaccoub 我也添加了 OutboundLoad 类。请仔细查看。
-
@osamayaccoub 我已经编辑了链关系。问题在于 LoadContainerTrayPK 与 LoadContainerPK 有 PK。