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";
}
成员.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 与 hibernate 一起使用 save() 方法保存或更新 CandRef 实体。 更新“EDJ_CANDD_REF”表后,保存方法会调用“REF_GRP_MBER”表上的删除。现在在这种情况下,私有(private)集成员始终为null,我无法理解为什么它试图从子表中删除列。
我不想删除/更新任一子表中的任何列。我确实在可连接上尝试了 insertable = false, updatable = false 但不起作用
有人可以帮我吗?
提前致谢。
delete
from
ref_grp_mber
where
ref_grp_id=?
最佳答案
当这种情况发生时,你到底要改变什么?如果成员发生变化,那么这是一种逻辑行为,因为表 REF_GRP_MBER 存储与成员的关系,如果成员发生变化,旧记录将被删除,并根据变化添加新记录
关于java - Spring Jpa save() 从子实体中删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58978937/