【发布时间】:2022-01-27 08:09:01
【问题描述】:
我有具有复合主键的关系实体。
@Getter
@Setter
@Entity
@IdClass(VulnerabilityTargetId.class)
@Table(name = "vulnerabilities_targets")
@Where(clause = "deleted='false'")
@SQLDelete(
sql =
"UPDATE vulnerabilities_targets SET deleted = true WHERE target_id = ? and vulnerability_id = ?")
public class VulnerabilityTarget extends BaseRelEntity {
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "target_id")
private Target target;
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "vulnerability_id")
private Vulnerability vulnerability;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
VulnerabilityTarget that = (VulnerabilityTarget) o;
return target.equals(that.target) && vulnerability.equals(that.vulnerability);
}
@Override
public int hashCode() {
return Objects.hash(target, vulnerability);
}
}
还有漏洞和目标实体。我的 Id 类是:
@Getter
@Setter
@EqualsAndHashCode
public class VulnerabilityTargetId implements Serializable {
private long vulnerability;
private long target;
}
顺便说一句,我尝试像这样将目标 ID 添加到 VulnerabilityTarget 实体并得到错误“实体映射中的重复列:com.security.raze.pojo.internal.entity.relation.VulnerabilityTarget_AUD”
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "target_id", insertable = false, updatable = false)
private Target target;
@Column(name = "target_id")
private Long targetId;
所以,我想在删除目标时删除所有关系。如何使用 target_id 删除 VulnerabilityTarget? (通过命名查询或使用 cascase remove)
【问题讨论】:
标签: hibernate jpa spring-data-jpa