簡體   English   中英

如何在JPA中堅持父母和孩子?

[英]How to persist parent and childs in JPA?

我有一個名為結論的表,它與表注釋有關系。

當我同時添加結論和評論時,正在插入結論但是孩子得到的結論id為null,因為我違反了非null約束。 我的交易回滾結論也未插入。

所以請告訴我如何立即插入父母和孩子。

我的實體是

結論實體

@Entity
@Table(name="olm_anlys_cncln")
public class OlmAnalysisConclusion implements Serializable {
private static final long serialVersionUID = 1L;
private Long conclusionId;
private String concludedBy;
private Timestamp concludedTime;
private String conclusion;
private Timestamp discussionEndTime;
private String discussionActive;
private Timestamp discussionStartTime;
private Integer tntId;
private OlmAnalysis olmAnly;
private OlmAnalysisCategory olmAnlysCatgMstr;
private OlmAnalysisCause olmAnlysCauseMstr;
private List<OlmInvsgDiscussionComment> olmInvsgDiscnCmnts;

public OlmAnalysisConclusion() {
}


@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="olm_anlys_cncln_id")
public Long getConclusionId() {
    return this.conclusionId;
}

public void setConclusionId(Long conclusionId) {
    this.conclusionId = conclusionId;
}


@Column(name="cncld_by")
public String getConcludedBy() {
    return this.concludedBy;
}

public void setConcludedBy(String concludedBy) {
    this.concludedBy = concludedBy;
}


@Column(name="cncld_time")
public Timestamp getConcludedTime() {
    return this.concludedTime;
}

public void setConcludedTime(Timestamp concludedTime) {
    this.concludedTime = concludedTime;
}


@Column(name="cncln")
public String getConclusion() {
    return this.conclusion;
}

public void setConclusion(String conclusion) {
    this.conclusion = conclusion;
}


@Column(name="discn_end_time")
public Timestamp getDiscussionEndTime() {
    return this.discussionEndTime;
}

public void setDiscussionEndTime(Timestamp discussionEndTime) {
    this.discussionEndTime = discussionEndTime;
}


@Column(name="discn_flag")
public String getDiscussionActive() {
    return this.discussionActive;
}

public void setDiscussionActive(String discussionActive) {
    this.discussionActive = discussionActive;
}


@Column(name="discn_strt_time")
public Timestamp getDiscussionStartTime() {
    return this.discussionStartTime;
}

public void setDiscussionStartTime(Timestamp discussionStartTime) {
    this.discussionStartTime = discussionStartTime;
}


@Column(name="tnt_id")
public Integer getTntId() {
    return this.tntId;
}

public void setTntId(Integer tntId) {
    this.tntId = tntId;
}


//bi-directional many-to-one association to OlmAnalysis
@ManyToOne
@JoinColumn(name="anlys_id")
public OlmAnalysis getOlmAnly() {
    return this.olmAnly;
}

public void setOlmAnly(OlmAnalysis olmAnly) {
    this.olmAnly = olmAnly;
}


//bi-directional many-to-one association to OlmAnalysisCategory
@ManyToOne
@JoinColumn(name="catg_id")
public OlmAnalysisCategory getOlmAnlysCatgMstr() {
    return this.olmAnlysCatgMstr;
}

public void setOlmAnlysCatgMstr(OlmAnalysisCategory olmAnlysCatgMstr) {
    this.olmAnlysCatgMstr = olmAnlysCatgMstr;
}


//bi-directional many-to-one association to OlmAnalysisCause
@ManyToOne
@JoinColumn(name="cause_id")
public OlmAnalysisCause getOlmAnlysCauseMstr() {
    return this.olmAnlysCauseMstr;
}

public void setOlmAnlysCauseMstr(OlmAnalysisCause olmAnlysCauseMstr) {
    this.olmAnlysCauseMstr = olmAnlysCauseMstr;
}


//bi-directional many-to-one association to OlmInvsgDiscussionComment
@OneToMany(fetch=FetchType.EAGER,mappedBy="olmAnlysCncln",cascade=CascadeType.ALL)
public List<OlmInvsgDiscussionComment> getOlmInvsgDiscnCmnts() {
    return this.olmInvsgDiscnCmnts;
}

public void setOlmInvsgDiscnCmnts(List<OlmInvsgDiscussionComment> olmInvsgDiscnCmnts) {
    this.olmInvsgDiscnCmnts = olmInvsgDiscnCmnts;
}

public OlmInvsgDiscussionComment addOlmInvsgDiscnCmnt(OlmInvsgDiscussionComment olmInvsgDiscnCmnt) {
    getOlmInvsgDiscnCmnts().add(olmInvsgDiscnCmnt);
    olmInvsgDiscnCmnt.setOlmAnlysCncln(this);

    return olmInvsgDiscnCmnt;
}

public OlmInvsgDiscussionComment removeOlmInvsgDiscnCmnt(OlmInvsgDiscussionComment olmInvsgDiscnCmnt) {
    getOlmInvsgDiscnCmnts().remove(olmInvsgDiscnCmnt);
    olmInvsgDiscnCmnt.setOlmAnlysCncln(null);

    return olmInvsgDiscnCmnt;
}

}

評論實體

@Entity
@Table(name="olm_invsg_discn_cmnt")
public class OlmInvsgDiscussionComment implements Serializable {
private static final long serialVersionUID = 1L;
private Long commentId;
private String comment;
private Timestamp commentTime;
private String commentedBy;
private Integer tenentId;
private OlmAnalysisConclusion olmAnlysCncln;
private Set<OlmInvsgCommentAttachment> olmInvsgDiscnCmntAtmnts;

public OlmInvsgDiscussionComment() {
}


@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="olm_invsg_discn_cmnt_id")
public Long getCommentId() {
    return this.commentId;
}

public void setCommentId(Long commentId) {
    this.commentId = commentId;
}


@Column(name="cmnt")
public String getComment() {
    return this.comment;
}

public void setComment(String comment) {
    this.comment = comment;
}


@Column(name="cmnt_time")
public Timestamp getCommentTime() {
    return this.commentTime;
}

public void setCommentTime(Timestamp commentTime) {
    this.commentTime = commentTime;
}


@Column(name="cmntd_by")
public String getCommentedBy() {
    return this.commentedBy;
}

public void setCommentedBy(String commentedBy) {
    this.commentedBy = commentedBy;
}


@Column(name="tnt_id")
public Integer getTenentId() {
    return this.tenentId;
}

public void setTenentId(Integer tenentId) {
    this.tenentId = tenentId;
}


//bi-directional many-to-one association to OlmAnalysisConclusion
@ManyToOne(fetch=FetchType.EAGER, optional=false)
@JoinColumn(name="cncln_id")
public OlmAnalysisConclusion getOlmAnlysCncln() {
    return this.olmAnlysCncln;
}

public void setOlmAnlysCncln(OlmAnalysisConclusion olmAnlysCncln) {
    this.olmAnlysCncln = olmAnlysCncln;
}


//bi-directional many-to-one association to OlmInvsgCommentAttachment
@OneToMany(fetch=FetchType.EAGER,mappedBy="olmInvsgDiscnCmnt",cascade=CascadeType.ALL)
public Set<OlmInvsgCommentAttachment> getOlmInvsgDiscnCmntAtmnts() {
    return this.olmInvsgDiscnCmntAtmnts;
}

public void setOlmInvsgDiscnCmntAtmnts(Set<OlmInvsgCommentAttachment> olmInvsgDiscnCmntAtmnts) {
    this.olmInvsgDiscnCmntAtmnts = olmInvsgDiscnCmntAtmnts;
}

public OlmInvsgCommentAttachment addOlmInvsgDiscnCmntAtmnt(OlmInvsgCommentAttachment olmInvsgDiscnCmntAtmnt) {
    getOlmInvsgDiscnCmntAtmnts().add(olmInvsgDiscnCmntAtmnt);
    olmInvsgDiscnCmntAtmnt.setOlmInvsgDiscnCmnt(this);

    return olmInvsgDiscnCmntAtmnt;
}

public OlmInvsgCommentAttachment   removeOlmInvsgDiscnCmntAtmnt(OlmInvsgCommentAttachment olmInvsgDiscnCmntAtmnt) {
    getOlmInvsgDiscnCmntAtmnts().remove(olmInvsgDiscnCmntAtmnt);
    olmInvsgDiscnCmntAtmnt.setOlmInvsgDiscnCmnt(null);

    return olmInvsgDiscnCmntAtmnt;
}

}

表中連接olmAnlysCncln空的最可能原因是olmAnlysCncln字段在您嘗試保留的OlmInvsgDiscussionComment實體中為null 這是雙向關聯的所有者方。 如果希望Hibernate在相應的列中設置某些內容,則必須對其進行初始化。 將評論添加到結論是不夠的。

旁注:在屬性名稱中接受元音,甚至是推薦元音。 您應該能夠發音屬性名稱。 olmInvsgDiscnCmntAtmnts是不可olmInvsgDiscnCmntAtmnts可讀的。 使用正確的英文名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM