Может somemone пожалуйста помочь с ниже ошибкой, связанной с зимовать при запуске моего WEBSPHERE сервера:Повторный столбец отображения для объекта исключения + спящий режим 3.5.6
В принципе, L_SUBLIST_DETAIL моя основная таблица с первичным ключом. Это имеет от одного до многих сопоставлений с двумя другими таблицами L_SUBLIST_CSI_BU_MAPPING и L_SUBLIST_RULESET_MAPPING. Проблема заключается в том, что с таблицей L_SUBLIST_RULESET_MAPPING, где sublist_id и ruleset_id формируют составной ключ, и сублист_id является внешним ключом, ссылающимся на sublist_id таблицы L_SUBLIST_RULESET_MAPPING.
************************** 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 состоят в следующем.
LSublistRulesetMappingVO
@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;
}
}
LSublistRulesetMappingVOPK
@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;
}
}
Привет, спасибо за ур ответ. Это не первичный ключ, а составной ключ. И такой составной ключ отлично работает для других таблиц, где у нас нет такого сложного отношения. –