Java 为什么jpa2/eclipselink不在delete级联SQL上生成?
@实体 公共类MUser实现了可序列化的memonentity{Java 为什么jpa2/eclipselink不在delete级联SQL上生成?,java,orm,jpa,eclipselink,jpa-2.0,Java,Orm,Jpa,Eclipselink,Jpa 2.0,@实体 公共类MUser实现了可序列化的memonentity{ private static final long serialVersionUID = 1L; @Id private String email; @OneToMany(cascade=CascadeType.ALL, orphanRemoval=true) private Set<Meaning> mengs = new HashSet<Meaning>(); 我试图让删除一个缪斯会删除所有与之相关
private static final long serialVersionUID = 1L;
@Id
private String email;
@OneToMany(cascade=CascadeType.ALL, orphanRemoval=true)
private Set<Meaning> mengs = new HashSet<Meaning>();
我试图让删除一个缪斯会删除所有与之相关的意义
为什么jpa2/eclipselink不在delete级联SQL上生成
因为事情不是这样的。指定cascade=REMOVE
意味着REMOVE
操作将由JPA提供者级联到实体,而不是在数据库级别使用约束
某些提供程序确实具有在数据库级别使用级联删除约束而不是常规机制的扩展。例如,对于Hibernate,您可以指定:
@OnDelete(action=OnDeleteAction.CASCADE)
在连接的子类上:在删除时使用SQL级联删除,而不是常规的Hibernate机制
但我不知道EclipseLink是否有类似的东西
工具书类
- JPA2.0规范
- 第3.2.3节“拆除”
- Hibernate注释参考指南
CREATE TABLE MUSER_MEANING (MUser_EMAIL VARCHAR(255) NOT NULL, mengs_OBJID INTEGER NOT NULL, PRIMARY KEY (MUser_EMAIL, mengs_OBJID))
CREATE TABLE MUSER_MEANING (MUser_EMAIL VARCHAR(255) NOT NULL, mengs_OBJID INTEGER NOT NULL, PRIMARY KEY (MUser_EMAIL, mengs_OBJID))
ALTER TABLE MEANING ADD CONSTRAINT MEANING_USR_EMAIL FOREIGN KEY (USR_EMAIL) REFERENCES MUSER (EMAIL)
ALTER TABLE MUSER_MEANING ADD CONSTRAINT MSRMEANINGMsrEMAIL FOREIGN KEY (MUser_EMAIL) REFERENCES MUSER (EMAIL)