Spring 使用可嵌入键中的两个字段删除的数据 JPA 方法
Spring Data JPA method for deleting using a two fields in the embaddable key
这是主要实体 class,它有一个 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;
}
spring 数据 Jpa 中是否有任何可用的删除方法仅基于两个可嵌入密钥(toInst、relInvstid)进行删除。
我仍然可以编写 JPQL 查询来删除它。我的问题是有什么方法可以做到这一点。
喜欢 deleteById 吗?
是的,repo.deleteByIdToInstAndIdRelInvstid(toInst,relInnvstid)
如您所见,您必须指定 deleteById
ToInst ,这就是您引用嵌入式 ID 字段的方式,与引用外部关系字段的方式相同。这里 Id
匹配您的字段命名
@EmbeddedId
private LabResHivMutationPK id;
有两种删除实体的方法:要么使用它自己的“JPA Repository derived delete method”long deleteByFirstIdAndSecondId(long firstId , secondId)
在您的服务中,您可以简单地调用它:repository.deleteByFirstIdAndSecondId(long firstId , secondId)
另一种方法是通过父实体排除子实体(或实体取决于关系类型)。
用户使用@Embedded 键在实体将有多个键时使用下划线“_”。
示例:repository.deleteByid_toInst();
这是主要实体 class,它有一个 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;
}
spring 数据 Jpa 中是否有任何可用的删除方法仅基于两个可嵌入密钥(toInst、relInvstid)进行删除。
我仍然可以编写 JPQL 查询来删除它。我的问题是有什么方法可以做到这一点。
喜欢 deleteById 吗?
是的,repo.deleteByIdToInstAndIdRelInvstid(toInst,relInnvstid)
如您所见,您必须指定 deleteById
ToInst ,这就是您引用嵌入式 ID 字段的方式,与引用外部关系字段的方式相同。这里 Id
匹配您的字段命名
@EmbeddedId
private LabResHivMutationPK id;
有两种删除实体的方法:要么使用它自己的“JPA Repository derived delete method”long deleteByFirstIdAndSecondId(long firstId , secondId)
在您的服务中,您可以简单地调用它:repository.deleteByFirstIdAndSecondId(long firstId , secondId)
另一种方法是通过父实体排除子实体(或实体取决于关系类型)。
用户使用@Embedded 键在实体将有多个键时使用下划线“_”。 示例:repository.deleteByid_toInst();