Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate注释onDelete未提交shema导出_Java_Hibernate_Jakarta Ee_Persistence - Fatal编程技术网

Java 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

我对hibernate 4.3.5注释有问题。 我有一个项目,我使用注释和hibernate shema导出生成我的数据库。所有的JPAs注释工作正常,数据库生成良好。 当我想添加一个hibernate注释:onDelete时,问题就出现了。这个注释被shema导出忽略了,我找不到使它工作的方法。 我搜索了很多,找到了一些类似的话题,但没有一个能解决我的问题

@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