我正在使用后端的RESTful API(Spring MVC)和JPA(Spring Data JPA存储库)以及前端的AngularJS开发应用程序。
我有两个类:Client
和Address
,一个客户端可以有多个地址。
我的问题是删除一个地址时出错。这是我的两个实体:
@Entity
@Table(name = "T_CLIENT")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Client implements Serializable {
...
@OneToMany(mappedBy = "client", fetch = FetchType.EAGER)
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Adresse> adresses = new HashSet<>();
...
}
@Entity
@Table(name = "T_ADRESSE")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Adresse implements Serializable {
...
@ManyToOne
private Client client;
...
}
我删除地址的网络资源方法:
@RequestMapping(value = "/rest/adresses/{id}",
method = RequestMethod.DELETE,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public void delete(@PathVariable Long id) {
adresseRepository.delete(id);
}
我想说我要删除id = 9的Address
。删除完成后,我正在使用他的地址加载Client
,我收到此错误:
[ERROR] org.apache.catalina.core.ContainerBase。[Tomcat的]。[本地主机]。[/]。[DispatcherServlet的] - 用于servlet [dispatcherServlet]的Servlet.service()在上下文中,路径[]引发异常[请求处理失败;嵌套异常 是org.springframework.orm.jpa.JpaObjectRetrievalFailureException: 无法找到ID为9的com.myapp.domain.Adresse;
嵌套异常是 javax.persistence.EntityNotFoundException:无法找到 具有id 9的com.myapp.domain.Adresse具有根本原因 javax.persistence.EntityNotFoundException:无法找到 com.myapp.domain.Adresse,ID为9
我的猜测是我没有以正确的方式删除实体Address
。
答案 0 :(得分:1)
首先,我不知道为什么你在类级别和字段级别在Client类中具有相同的注释: - @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
如果需要,您可以离开现场。
尝试从Client类中注释掉此缓存策略注释,如果有效,则必须检查缓存配置。
希望它有所帮助。