这是主要的实体类,它有一个embeddedId
public class LabResHivMutation implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private LabResHivMutationPK id;
private String comments;
@Column(name="MUTATION_TYPE_ID")
private BigDecimal mutationTypeId;
@Column(name="VALUE")
private String value;
}
这是可嵌入的密钥
@Embeddable
public class LabResHivMutationPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
@Column(name="TO_INST")
private Long toInst;
@Column(name="REL_INVSTID")
private long relInvstid;
@Column(name="MUTATION_ID")
private long mutationId;
}
弹出数据Jpa中是否有任何删除方法只能基于两个embaddable键(toInst,relInvstid)删除。
我仍然可以编写一个JPQL查询来删除它。我的问题是有任何可用的方法。
像deleteById?
答案 0 :(得分:2)
是的,repo.deleteByIdToInstAndIdRelInvstid(toInst,relInnvstid)
如您所见,您必须指定deleteBy Id
ToInst,这是您引用嵌入式ID字段的方式,与引用外部关系字段的方式相同。此处Id
与您的字段命名匹配
@EmbeddedId
private LabResHivMutationPK id;
答案 1 :(得分:0)
删除实体有两种方法:使用其自己的“JPA 存储库派生删除方法”long deleteByFirstIdAndSecondId(long firstId , secondId)
在您的服务中,您可以简单地调用它:repository.deleteByFirstIdAndSecondId(long firstId , secondId)
另一种方法是通过父实体排除子实体(或实体取决于关系类型)。