我正在使用JPA的许多很多注释。我有3个表postal_master
,postal_mapping
和postal_detail
。我必须在postal_detail
表中插入新记录,但是该条目已经在postal_master
表中。
现在要实现相同的目的,我必须从id
表中获取postal_master
,并使用现有的JPA
实体和{ {1}}。新记录已成功插入postal_master
中,但是postal_detail
表删除了postal_detail
实体的先前映射并插入了新映射。我希望映射表中应该存在新的和以前的映射。
postal_mapping
在postal_master
表中,我以@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL})
@JoinTable(name = "dbk_postal_mapping", joinColumns = @JoinColumn(name =
"postal_master_id"), inverseJoinColumns = @JoinColumn(name =
"postal_detail_id"))
private Set<PostalDetailEntity> postalDetails;
作为主键,与postal_master
表相同。在id
表中,postal_detail
和postal_mapping
是外键,将其视为主键。
我不擅长绘画。如果你们不明白这个问题,请告诉我吗?
保存代码:
postal_master_id
域类:
PostalMaster:
postal_detail_id
PostalDetail:
Long postalMasterId
=postalMasterRespository.findByCountryCodeAndPostalCode(postalMasterEntity.getCountryCode() , postalMasterEntity.getPostalCode());
if(null != postalMasterId) {
postalMasterEntity.setId(postalMasterId);
}
postalMasterRespository.save(postalMasterEntity);
AuditableEntity:
@Entity
@Data
@Table(name = "dbk_postal_master")
@EqualsAndHashCode(callSuper = false, exclude = {"id", "postalDetails"})
public class PostalMasterEntity extends AuditableEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String countryCode;
private String postalCode;
@Column(name = "is_active")
private Boolean active;
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL})
@JoinTable(name = "dbk_postal_mapping", joinColumns = @JoinColumn(name = "postal_master_id"), inverseJoinColumns = @JoinColumn(name = "postal_detail_id"))
private Set<PostalDetailEntity> postalDetails;
请让我知道我该如何实现?
谢谢。
答案 0 :(得分:0)
从主对象获取一组邮政详细信息,并在其中添加新的邮政详细信息。然后再次设置并调用保存方法。