CandRef.java
@Getter
@Setter
@AllArgsConstructor
@EqualsAndHashCode
@NoArgsConstructor
@Entity
@IdClass(CandRefKey.class)
@Table(name = "EDJ_CANDD_REF")
public class CandRef implements Serializable {
/**
*
*/
private static final long serialVersionUID = -7171464769202238804L;
@Id
@Column(name = "EDJ_CANDD_ID")
private Integer candId;
@Id
@Column(name = "EDJ_CANDD_INST_NO")
private Integer instNo;
@Id
@Column(name = "SEQ_NO")
private Integer seqNo;
@Column(name = "EFF_BEG_DA")
private LocalDate beginDate;
@Column(name = "EFF_END_DA")
private LocalDate endDate;
@Column(name = "EDJ_RQSTN_ID")
private Integer rqstnId;
@Column(name = "RCRT_STAT_CD")
private String statCd;
@Column(name = "RCRT_STAT_DA")
private LocalDate startDate;
@Column(name = "CANDD_ORG_CD")
private String orgCd;
@Column(name = "CANDD_ORG_TYPE_CD")
private String orgTypeCd;
@Column(name = "ISO_CTRY_CD")
private String ctryCd;
@Column(name = "REF_GRP_ID")
private Integer refGrpId;
@OneToMany
@JoinTable(name = "REF_GRP_MBER", joinColumns = {
@JoinColumn(name = "REF_GRP_ID", referencedColumnName = "REF_GRP_ID") }, inverseJoinColumns = {
@JoinColumn(name = "REF_MBER_ID", referencedColumnName = "REF_MBER_ID") })
private Set<Member> members;
@Column(name = "REF_CNT_IND")
private String cntInd;
@Column(name = "REF_CR_IND")
private String creditInd;
@Column(name = "EDJ_CANDD_TY_CD")
private String candTyCd;
@Column(name = "REF_EXC_TY_CD")
private String excTyCd;
@Column(name = "REF_EXC_REVW_STAT_CD")
private String revwStatCd;
}
GrpMember.java
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode
@Entity
@IdClass(GrpMemberKey.class)
@Table(name = "REF_GRP_MBER")
public class GrpMember implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6907938568490379028L;
@Id
@Column(name = "REF_GRP_ID")
private String refGrpId;
@Id
@Column(name = "REF_MBER_ID")
private Integer refMemberId;
@Column(name = "REF_CR_QTY")
private Double creditQty;
@CreationTimestamp
@Column(name = "CRE_TS", nullable = false, updatable= false)
private LocalDateTime createTimeStamp;
@Column(name = "CRE_PGM_NA", nullable = false, updatable= false)
private String createPrgmName;
@Column(name = "CRE_UID_CD", nullable = false, updatable= false)
private String createUIDCD;
@UpdateTimestamp
@Column(name = "REVSN_TS", nullable = false, insertable= false)
private LocalDateTime revisonTimeStamp;
@Column(name = "REVSN_PGM_NA", nullable = false, insertable= false)
private String revisonPrgmName ="RC_SVC";
@Column(name = "REVSN_UID_CD", nullable = false, insertable= false)
private String revisonUIDCD ="ATSWEB";
}
Member.java
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode
@Entity
@Table(name = "REF_MBER")
public class Member {
@Id
@Column(name = "REF_MBER_ID")
private Integer refMemberId;
@Column(name = "EFF_BEG_DA")
private LocalDate beginDate;
@Column(name = "EFF_END_DA")
private LocalDate endDate;
@Column(name = "REF_EDJ_PRSN_ID")
private String refPrsnId;
@Column(name = "REF_LOC_CD")
private String refLocCd;
@Column(name = "EDJ_PRSN_GROUP_CD")
private String prsnGrpCd;
@Column(name = "REF_ORG_CD")
private String orgCd;
@Column(name = "REF_ORG_TYPE_CD")
private String orgTypeCd;
@Column(name = "ORG_ONLY_REF_IND")
private String orgRefInd;
@Formula("(SELECT g.REF_CR_QTY FROM REF_GRP_MBER g WHERE g.ref_mber_id = REF_MBER_ID)")
private Double creditQty;
@CreationTimestamp
@Column(name = "CRE_TS")
private LocalDateTime createTimeStamp;
@Column(name = "CRE_PGM_NA")
private String createPrgmName;
@Column(name = "CRE_UID_CD")
private String createUIDCD;
@UpdateTimestamp
@Column(name = "REVSN_TS")
private LocalDateTime revisonTimeStamp;
@Column(name = "REVSN_PGM_NA")
private String revisonPrgmName;
@Column(name = "REVSN_UID_CD")
private String revisonUIDCD;
}
CandRefRepository.java
public interface CandidateRefRepository extends CrudRepository<CandRef, CandRefKey> {
List<CandRef> findByCandIdOrderByInstNoDesc(Integer candId);
List<CandRef> findAllByCandIdAndStatCd(Integer candId, String statCd);
@Query(value = CandidateRefConstants.CURRENT_INSTANCE_WITH_EXCEPTION)
List<CandRef> fetchCurrentInstance();
@Query(value = CandidateRefConstants.CURRENT_MAX_SEQUENCE_BY_CANDID)
CandRef fetchCurrentMaxSequence(@Param("candId") Integer candId);
@Query(value = CandidateRefConstants.CURRENT_INSTANCE_BY_STATCD)
List<CandRef> fetchCurrentInstanceBycandId(@Param("candId") Integer candId);
}
Я использую spring boot и spring jpa с гибернацией, чтобы сохранить или обновить объект CandRef с помощью метода save (). Метод сохранения вызывает удаление для таблицы «REF_GRP_MBER» после обновления таблицы «EDJ_CANDD_REF». В этом случае частные члены набора всегда имеют значение null, и я не могу понять, почему он пытается удалить столбец из дочерней таблицы.
Я не хочу удалять / обновлять какие-либо столбцы ни в одной из дочерних таблиц. Я попробовал insertable = false, updatable = false на совместном объекте, который не сработал.
Может ли кто-нибудь помочь мне здесь?
Заранее спасибо.
delete
from
ref_grp_mber
where
ref_grp_id=?