JPA 存储库 - 一对多 - 删除一个问题 child
JPA Repository - one to many - issue with removing one child
我父子之间是一对多的关系。我正在使用 JPA 存储库。
如果我删除一个 ID 为 54 的儿子,然后再次获取所有儿子:
sonRepository.delete(id);
List<Son> sons = sonRepository.findAll();
我收到这个错误:
javax.persistence.EntityNotFoundException: Unable to find
com.myapp.domain.Son with id 54
我的实体:
@Entity
@Table(name = "T_FATHER")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class FAther implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(mappedBy = "father", fetch = FetchType.EAGER)
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Son> sons = new HashSet<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Set<Son> getSons() {
return sons;
}
public void setSons(Set<Son> sons) {
this.sons = sons;
}
}
@Entity
@Table(name = "T_SON")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Son implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
private Father father;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Father getFather() {
return father;
}
public void setFather(Father father) {
this.father = father;
}
}
这个错误似乎只有当儿子已经在数据库中或通过 sql 插入到数据库中(而不是应用程序)时才会发生。如果儿子是通过应用程序添加的:
sonRepository.save(son);
我没有任何问题。如果我重新启动服务器,问题会再次发生。如果addSon和deleteSon不是在同一个session(同一个服务器实例)中完成,就会出现这个问题。
我不明白我做错了什么。如果有人可以帮助我...
谢谢。
这对我来说似乎是缓存机制中的一个错误。我会向 Spring 报告。作为解决方法,OP 确认删除 @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
.
我父子之间是一对多的关系。我正在使用 JPA 存储库。 如果我删除一个 ID 为 54 的儿子,然后再次获取所有儿子:
sonRepository.delete(id);
List<Son> sons = sonRepository.findAll();
我收到这个错误:
javax.persistence.EntityNotFoundException: Unable to find com.myapp.domain.Son with id 54
我的实体:
@Entity
@Table(name = "T_FATHER")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class FAther implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(mappedBy = "father", fetch = FetchType.EAGER)
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Son> sons = new HashSet<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Set<Son> getSons() {
return sons;
}
public void setSons(Set<Son> sons) {
this.sons = sons;
}
}
@Entity
@Table(name = "T_SON")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Son implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
private Father father;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Father getFather() {
return father;
}
public void setFather(Father father) {
this.father = father;
}
}
这个错误似乎只有当儿子已经在数据库中或通过 sql 插入到数据库中(而不是应用程序)时才会发生。如果儿子是通过应用程序添加的:
sonRepository.save(son);
我没有任何问题。如果我重新启动服务器,问题会再次发生。如果addSon和deleteSon不是在同一个session(同一个服务器实例)中完成,就会出现这个问题。
我不明白我做错了什么。如果有人可以帮助我...
谢谢。
这对我来说似乎是缓存机制中的一个错误。我会向 Spring 报告。作为解决方法,OP 确认删除 @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
.