Java Hibernate注释onDelete未提交shema导出
我对hibernate 4.3.5注释有问题。 我有一个项目,我使用注释和hibernate shema导出生成我的数据库。所有的JPAs注释工作正常,数据库生成良好。 当我想添加一个hibernate注释:onDelete时,问题就出现了。这个注释被shema导出忽略了,我找不到使它工作的方法。 我搜索了很多,找到了一些类似的话题,但没有一个能解决我的问题Java Hibernate注释onDelete未提交shema导出,java,hibernate,jakarta-ee,persistence,Java,Hibernate,Jakarta Ee,Persistence,我对hibernate 4.3.5注释有问题。 我有一个项目,我使用注释和hibernate shema导出生成我的数据库。所有的JPAs注释工作正常,数据库生成良好。 当我想添加一个hibernate注释:onDelete时,问题就出现了。这个注释被shema导出忽略了,我找不到使它工作的方法。 我搜索了很多,找到了一些类似的话题,但没有一个能解决我的问题 @Entity @Table (name="comment") public class Comment{ ... @Ma
@Entity
@Table (name="comment")
public class Comment{
...
@ManyToOne (fetch = FetchType.LAZY)
@OnDelete (action=OnDeleteAction.CASCADE)
@JoinColumn(name="from_user_id_comment")
User fromUser;
...
}
我的关系是双向的。(我在User类中有一个评论列表)
为创建表“comment”而生成的SQL脚本如下所示:
Hibernate:
create table comment (
...
from_user_id_comment integer,
...
primary key (id_comment)
)
Hibernate:
alter table comment
add constraint FK_7m60iklffdi8xx9m6tw8ci4w7
foreign key (from_user_id_comment)
references user (id_user)
我使用maven来处理依赖关系
我想要hibernate做的是用约束生成“ON DELETE CASCADE”,因此这个CASCADE由DB处理
谁能帮帮我吗
谢谢
拍
pom.xml依赖项:
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.2-1003-jdbc4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>4.3.5.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.14.8</version>
<scope>provided</scope>
</dependency>
</dependencies>
org.postgresql
postgresql
9.2-1003-jdbc4
mysql
mysql连接器java
5.1.25
javax.servlet
javax.servlet-api
3.1.0
假如
org.hibernate
冬眠核心
4.3.5.最终版本
javax.mail
邮政
1.4.7
org.apache.directory.studio
org.apache.commons.lang
2.6
org.hibernate
hibernate-c3p0
4.3.5.最终版本
org.projectlombok
龙目
1.14.8
假如
我终于成功了
hibernate mysqldialent(以及mysql5dialent)不会将@OnDelete注释转换为“ON DELETE CASCADE”语句。我不知道为什么
我的数据库是一个带有InnoDB引擎的MySQL5数据库。我发现我可以使用mysql5innodbdialent,它成功了 我所做的唯一更改是在hibernate.cfg.xml文件中的以下行:
<property name="dialect">
org.hibernate.dialect.MySQL5InnoDBDialect
</property>
有关Hibernate支持的其他方言,请参见此页面:Hibernate架构导出不会为JPA级联生成SQL级联删除。有什么方法可以做到这一点吗?我的意思是,您不需要手动定制模式导出。阿福,这是不容易的,我不会做它只是为了一个项目。我也不确定在我的项目中将JPA级联转换成SQL级联。顺便说一句,级联可能是在多通上指定的,您不需要OnDelete注释。我只是设法让它工作。模式导出可以生成SQL级联删除,但不能使用简单的mysqldial。我不知道为什么。它用其他方言生成它们。好的,谢谢,很高兴知道。
Hibernate:
alter table comment
add constraint FK_7m60iklffdi8xx9m6tw8ci4w7
foreign key (from_user_id_comment)
references user (id_user)
on delete cascade