【发布时间】:2014-05-29 07:53:36
【问题描述】:
这是我的实体类
@Entity
@Table(name="hdr_info")
public class HdrInfo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="hdr_sr_no")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer HdrSrNo;
@Column(name="comp_cd")
private Integer compCd;
//bi-directional many-to-one association to EppsMmMtrlReqDtl
@OneToMany(mappedBy="hdrInfo")
@Cascade(CascadeType.SAVE_UPDATE)
private List<DetailInfo> detailInfo;
//getters and setters
}
详细信息实体类
@Entity
@Table(name="detail_info")
public class DetailInfo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="dtl_sr_no")
private Integer dtlSrNo;
@Column(name="active_yn")
private String activeYn;
@Column(name="short_close_qty")
private BigDecimal shortCloseQty;
@Column(name="short_close_rsn")
private String shortCloseRsn;
@Column(name="short_close_yn")
private String shortCloseYn;
@Column(name="sugg_brand")
private String suggBrand;
@Column(name="terminal_id")
private String terminalId;
@Column(name="transaction_stage")
private Integer transactionStage;
//bi-directional many-to-one association to EppsMmMtrlReqHdr
@ManyToOne
@JoinColumn(name="hdr_sr_no", nullable = false)
private HdrInfo hdrInfo;
//getters and setters
}
主要
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
HdrInfo hdr =new HdrInfo();
hdr.setCompCd(1);
List<DetailInfo> lst=new ArrayList<DetailInfo>();
for (int j = 0; j < 3; j++) {
DetailInfo dtl=new DetailInfo();
dtl.setTransactionStage(Integer.parseInt("1"));
dtl.setTerminalId("linuxPc01");
dtl.setActiveYn("Y");
dtl.setShortCloseYn("Y");
dtl.setHdrInfo(hdr);
lst.add(dtl);
}
hdr.setEppsMmMtrlReqDtls(lst);
session.saveOrUpdate(hdr);
session.getTransaction().commit();
}
现在,如果我运行主类来保存带有 DtlInfoClass 列表的 HderInfo 类,则在保存 DtlInfo 列表时发现相同对象标识符的错误,现在 DtlInfo 的主键也自动递增,那么什么是正确的解决方案?帮帮我!!!
【问题讨论】:
-
您的主要方法中有错误。您创建了 3 个 DetailInfo 对象并将其丢弃。您应该将其添加到 HdrInfo.detailInfo 列表中
-
sry 忘了添加,会更正它,但它也会给我同样的错误
-
还有更多错误... mappedBy="HdrInfo" 应该是 mappedBy="hdrInfo" 并且您没有开始交易。并且您必须初始化 arraylist 详细信息。比主要添加它,这对我来说没有问题。
-
并且错误是 org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话关联:
标签: java hibernate hibernate-mapping