Spring Data JPA方法,用于使用embaddable键中的两个字段进行删除

时间:2017-04-13 03:40:55

标签: spring-mvc jpa spring-data spring-data-jpa jpql

这是主要的实体类,它有一个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?

2 个答案:

答案 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)

另一种方法是通过父实体排除子实体(或实体取决于关系类型)。