【发布时间】:2012-03-23 17:45:45
【问题描述】:
我在删除另一个表引用的记录时遇到问题。
这是一个代码示例(最简单的场景):
@Entity
@Table(name = "user")
public class User
{
@Id
@GeneratedValue(generator="user_id_seq", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name="user_id_seq", sequenceName="user_id_seq")
@Column(name = "id", nullable = false)
private int id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
private Set<UserLog> userLogSet;
// Other attributes
// Getters/setters
}
@Entity
@Table(name = "user_log")
public class UserLog
{
@Id
@GeneratedValue(generator="user_log_id_seq", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name="user_log_id_seq", sequenceName="user_log_id_seq")
@Column(name = "id", nullable = false)
private int id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id", nullable = false)
private User user;
// Other attributes
// Getters/setters
}
每当我尝试从“用户”表中删除记录时,我都会从 postgreSQL 收到以下错误:
错误:更新或删除表“用户”违反外键 表“user_log”上的约束“fk228a019fd2495d20”
详细信息:键 (id)=(5) 仍然从表“user_log”中引用。
我做错了什么?
谢谢!
更新:我尝试编写一个小例子,可以找到here。使用 Tomcat 启动应用程序后,会自动创建数据库模式(检查 /src/main/webapp/WEB-INF/jdbc.properties 中的连接详细信息)。当您访问http://localhost:8080 时,一些数据被插入到数据库中。如果我尝试删除 student 表中引用的任何 teacher(使用 phpPgAdmin),我会收到与上述类似的错误。
【问题讨论】:
标签: spring postgresql jpa