簡體   English   中英

實體例外+休眠3.5.6映射中的重復列

[英]Repeated column in mapping for entity exception + hibernate 3.5.6

在啟動我的Websphere服務器時,是否可以幫助解決以下與休眠有關的錯誤:

基本上,L_SUBLIST_DETAIL是我的帶有主鍵的主表。 它與其他2個表L_SUBLIST_CSI_BU_MAPPING和L_SUBLIST_RULESET_MAPPING具有一對多映射。 問題似乎在於L_SUBLIST_RULESET_MAPPING表,其中sublist_id和ruleset_id構成一個組合鍵,而sublist_id是一個外鍵,它引用了L_SUBLIST_RULESET_MAPPING表的sublist_id。

************************** Error ******************

Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: com.myProj.appName.ruleset.vo.LSublistRulesetMappingVO column: SUBLIST_ID (should be mapped with insert="false" update="false")

涉及的Java類如下。

LSublist規則集映射VO

@Entity
@IdClass(LSublistRulesetMappingVOPK.class)
@Table(name = "L_SUBLIST_RULESET_MAPPING")
public class LSublistRulesetMappingVO implements IBaseVO{

@Id
Long sublistId;

@Id
Long rulesetId;

@Column(name = "CSIID")
private String csiid;

public LSublistRulesetMappingVO(){}

public Long getSublistId() {
    return sublistId;
}

public void setSublistId(Long sublistId) {
    this.sublistId = sublistId;
}

public Long getRulesetId() {
    return rulesetId;
}

public void setRulesetId(Long rulesetId) {
    this.rulesetId = rulesetId;
}

public String getCsiid() {
    return csiid;
}

public void setCsiid(String csiid) {
    this.csiid = csiid;
}



}

LSublist規則集映射VOPK

@Embeddable
public class LSublistRulesetMappingVOPK implements Serializable {

private static final long serialVersionUID = 1L;

@Column(name = "SUBLIST_ID")
Long sublistId;

@Column(name = "RULESET_ID")
Long rulesetId;

public LSublistRulesetMappingVOPK() {}

public LSublistRulesetMappingVOPK(Long sublistId, Long rulesetId) {
    this.sublistId = sublistId;
    this.rulesetId = rulesetId;
}

public Long getSublistId() {
    return sublistId;
}

public void setSublistId(Long sublistId) {
    this.sublistId = sublistId;
}

public Long getRulesetId() {
    return rulesetId;
}

public void setRulesetId(Long rulesetId) {
    this.rulesetId = rulesetId;
}



}

LSublistCsiBUMappingVO

import com.myProj.appName.web.vo.IBaseVO;

@Entity
@Table(name = "L_SUBLIST_CSI_BU_MAPPING")
public class LSublistCsiBUMappingVO implements IBaseVO {    
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sublistCsiBuMapSeq")
@SequenceGenerator(name="sublistCsiBuMapSeq", sequenceName="L_SUBLIST_CSI_BU_MAPPING_SEQ",  allocationSize = 1) 
@Column(name = "MAPPING_ID")
private Long mappingId;

@Column(name = "SUBLIST_ID", insertable = false, updatable = false)
private Long sublistId;

@Column(name = "CSIID")
private String csiId;

@Column(name = "BU_INTERNAL_ID")
private Long buId;

@Column(name = "SOURCE_SUBLIST_ID")
private String sourceSublistId;



public Long getMappingId() {
    return mappingId;
}

public void setMappingId(Long mappingId) {
    this.mappingId = mappingId;
}

public Long getSublistId() {
    return sublistId;
}

public void setSublistId(Long sublistId) {
    this.sublistId = sublistId;
}

public String getCsiId() {
    return csiId;
}

public void setCsiId(String csiId) {
    this.csiId = csiId;
}

public Long getBuId() {
    return buId;
}

public void setBuId(Long buId) {
    this.buId = buId;
}

public String getSourceSublistId() {
    return sourceSublistId;
}

public void setSourceSublistId(String sourceSublistId) {
    this.sourceSublistId = sourceSublistId;
}
    }

LSublistDetailVO

@Entity
@Table(name = "L_SUBLIST_DETAIL")
public class LSublistDetailVO  implements IBaseVO{

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sublistDetailSeq")
@SequenceGenerator(name="sublistDetailSeq", sequenceName="L_SUBLIST_DETAIL_SEQ",  allocationSize = 1)   
@Column(name = "SUBLIST_ID")
private Long sublistId;

@Column(name = "SUBLIST_NAME")
private String sublistName;



@Column(name = "SUBLIST_DESC")
private String sublistDesc;





@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval= true)
@JoinColumn(name="SUBLIST_ID", nullable = false)    
private Set<LSublistCsiBUMappingVO> sublistCsiBUMappingVOSet;

@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval= true)
@JoinColumn( name="SUBLIST_ID", nullable = false)   
private Set<LSublistRulesetMappingVO> sublistRulesetMappingVOSet;   



public Long getSublistId() {
    return sublistId;
}

public void setSublistId(Long sublistId) {
    this.sublistId = sublistId;
}

public String getSublistName() {
    return sublistName;
}

public void setSublistName(String sublistName) {
    this.sublistName = sublistName;
}



public String getSublistDesc() {
    return sublistDesc;
}

public void setSublistDesc(String sublistDesc) {
    this.sublistDesc = sublistDesc;
}



public Set<LSublistCsiBUMappingVO> getSublistCsiBUMappingVOSet() {
    return sublistCsiBUMappingVOSet;
}

public void setSublistCsiBUMappingVOSet(
        Set<LSublistCsiBUMappingVO> sublistCsiBUMappingVOSet) {
    this.sublistCsiBUMappingVOSet = sublistCsiBUMappingVOSet;
}

public Set<LSublistRulesetMappingVO> getSublistRulesetMappingVOSet() {
    return sublistRulesetMappingVOSet;
}

public void setSublistRulesetMappingVOSet(
        Set<LSublistRulesetMappingVO> sublistRulesetMappingVOSet) {
    this.sublistRulesetMappingVOSet = sublistRulesetMappingVOSet;
}
}

您不能在同一類LSublistRulesetMappingVO中擁有兩個主鍵@Id。

我更改了以下2條語句的順序,並且服務器已啟動。 any1可以解釋出什么問題嗎?

舊:

@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER,orphanRemoval = true)@JoinColumn(name =“ SUBLIST_ID”,nullable = false)
私人Set sublistCsiBUMappingVOSet;

@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER,orphanRemoval = true)@JoinColumn(name =“ SUBLIST_ID”,nullable = false)
私人Set sublistRulesetMappingVOSet;

新:

@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER,orphanRemoval = true)@JoinColumn(name =“ SUBLIST_ID”,nullable = false)
私人Set sublistRulesetMappingVOSet;

@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER,orphanRemoval = true)@JoinColumn(name =“ SUBLIST_ID”,nullable = false)
私人Set sublistCsiBUMappingVOSet;

暫無
暫無

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

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