首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么deleteById采用双向方法?

为什么deleteById采用双向方法?
EN

Stack Overflow用户
提问于 2019-09-06 18:34:46
回答 3查看 75关注 0票数 0

我有两个实体,其中一个实体与第二个实体具有manyToOne关系

实体1:

代码语言:javascript
运行
复制
@Entity
@Table(name = "chilling_unit")
@Data
@NoArgsConstructor
public class ChillingUnitMonitoringDetailsDAO<T> {

  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE)
  private Long id;

  @Column(name="edge_controller_serial_number",nullable = false)
  private String l3SerialNumber;

  @Column(name = "product_type_name")
  private String productType;

  @ManyToOne(fetch = FetchType.EAGER, optional = false,cascade = javax.persistence.CascadeType.ALL
  @JoinColumn(name = "location_id")
  @OnDelete(action = OnDeleteAction.CASCADE)
  @JsonIgnore
  @EqualsAndHashCode.Exclude
  private LocationDAO location;

}

和实体2:

代码语言:javascript
运行
复制
@Entity
@Table(name = "location")
@Data
@NoArgsConstructor
public class LocationDAO {

  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE)
  private Long id;

  @Column(name = "location_id",unique = true)
  private String locId;

}

但是,每当我尝试使用JPA respository执行delete命令时,即deleteById(id),该操作将同时删除chlllingUnitMonitoringDetails和location

但是它应该只删除chlllingUnitMonitoringDetails行,而不是位置,谁能告诉我为什么位置也被删除了??

如何防止这种情况??

代码语言:javascript
运行
复制
public interface ChillingUnitMonitoringRepository<T> extends JpaRepository<ChillingUnitMonitoringDetailsDAO<T>,Long> {

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-06 18:49:34

上面有@OnDelete(action = OnDeleteAction.CASCADE)注释。这意味着“在删除ChillingUnitMonitoringDetailsDAO的同时,也删除LocationDAO”。

我建议您对级联类型做一些研究。您可以从这里开始:https://www.baeldung.com/jpa-cascade-types

如果Location字段上方有cascade = javax.persistence.CascadeType.ALLcascade = javax.persistence.CascadeType.REMOVE,则删除操作也将级联。

票数 1
EN

Stack Overflow用户

发布于 2019-09-06 18:45:43

只要删除行@OnDelete(action = OnDeleteAction.CASCADE)即可。

票数 0
EN

Stack Overflow用户

发布于 2019-09-06 20:45:03

您应该删除级联。

@ManyToOne(fetch = FetchType.EAGER,optional = false) @JoinColumn(name = "location_id")

@JsonIgnore @EqualsAndHashCode.Exclude私有LocationDAO位置;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57820394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档