【发布时间】:2014-08-01 15:01:10
【问题描述】:
这是 Eclipselink JPA 中的两个相关实体:
@Entity
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
@ManyToOne(cascade={CascadeType.ALL})
private Department department;
}
这是生成的 DDL:
CREATE TABLE PERSON (ID BIGINT IDENTITY NOT NULL, FIRSTNAME VARCHAR, LASTNAME VARCHAR, DEPARTMENT_ID BIGINT, PRIMARY KEY (ID))
CREATE TABLE DEPARTMENT (ID BIGINT IDENTITY NOT NULL, NAME VARCHAR, PRIMARY KEY (ID))
ALTER TABLE PERSON ADD CONSTRAINT FK_PERSON_DEPARTMENT_ID FOREIGN KEY (DEPARTMENT_ID) REFERENCES DEPARTMENT (ID)
环境是: - eclipselink 2.5.2 - mysql-connector-java 5.1.6
我希望在外键定义上至少有一个 ON DELETE CASCADE 子句。 在@ManyToOne 关系中,级联选项的用途是什么? 我真的必须在删除父记录之前手动删除子记录吗?
【问题讨论】:
-
在 EclipseLink 中,您将指定 @CascadeDelete 注释来告诉它应该在数据库级别自动删除关系,如此处所述wiki.eclipse.org/EclipseLink/Examples/JPA/DeleteCascade
标签: jpa eclipselink