【发布时间】:2014-09-23 13:55:17
【问题描述】:
我试图建立类别和出版物类 (OneToMany) 之间的关系,我需要删除属于特定类别的所有出版物。 我不知道我是否遗漏了一些注释,但这是我执行查询时的错误:
org.springframework.web.util.NestedServletException: 请求 处理失败;嵌套异常是 org.hibernate.exception.ConstraintViolationException:不能 执行更新查询 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) javax.servlet.http.HttpServlet.service(HttpServlet.java:618) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.hibernate.exception.ConstraintViolationException: 不能 执行更新查询。
org.postgresql.util.PSQLException:错误:更新或删除表 “类别”违反表上的外键约束“fkf5bea17d42c4af41” "publication" 详细信息:Key (id)=(190) 仍然引用自 表“出版物”。
我的源代码如下:
类别类:
@Entity
@Table(name = "category")
public class Category {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
private String description;
@OneToMany(mappedBy="category", orphanRemoval=true)
private List<Publication> publications;
// Getters and Setters
}
出版类:
@Entity
@Table(name = "Publication")
public class Publication {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String title;
private String content;
@ManyToOne
@JoinColumn(name = "id_category")
private Category category;
// Getters and Setters
}
查询删除类别:
@Override
public void deleteCategory(int id) {
sessionFactory.getCurrentSession()
.createQuery("DELETE FROM Category WHERE id="+id).executeUpdate();
}
提前谢谢大家。
【问题讨论】:
-
发布异常的完整堆栈跟踪。
-
@Chaitanya,谢谢你的回答,请再次检查我的问题。
标签: java hibernate jpa hibernate-annotations