有两个pojo,Person:School关系为N:1
==================Person.xml====================
<class name="com.gl.test.Person" table="persons">
<id name="id" >
<generator class="identity" />
</id>
<property name="name" type="string" column="name"
length="20" />
<many-to-one name="school" column="school_id" class="com.gl.test.School" />
</class>
==================School.xml============================
<class name="com.gl.test.School" table="schools">
<id name="id">
<generator class="identity" />
</id>
<property name="name" type="string" column="name"
length="20"/>
<set name="persons" inverse="true" cascade="all-delete-orphan" lazy="true" >
<key column="school_id"></key>
<one-to-many class="com.gl.test.Person" />
</set>
</class>在删除School数据时,总是提示有外键约束,不能删除,正常应该级联删除。
查看Hibernate生成的mysql 的sql代码,没有on delete cascade ,个人直观感觉是这的原因.
不知道是Hibernate不能自动支持mysql的级联删除吗,还是配置的原因?请教各位高手!
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/test
</property>
<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="myeclipse.connection.profile">db</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver</property> <property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="com/gl/test/Person.hbm.xml" />
<mapping resource="com/gl/test/School.hbm.xml" />
</session-factory>
==================Person.xml====================
<class name="com.gl.test.Person" table="persons">
<id name="id" >
<generator class="identity" />
</id>
<property name="name" type="string" column="name"
length="20" />
<many-to-one name="school" column="school_id" class="com.gl.test.School" />
</class>
==================School.xml============================
<class name="com.gl.test.School" table="schools">
<id name="id">
<generator class="identity" />
</id>
<property name="name" type="string" column="name"
length="20"/>
<set name="persons" inverse="true" cascade="all-delete-orphan" lazy="true" >
<key column="school_id"></key>
<one-to-many class="com.gl.test.Person" />
</set>
</class>在删除School数据时,总是提示有外键约束,不能删除,正常应该级联删除。
查看Hibernate生成的mysql 的sql代码,没有on delete cascade ,个人直观感觉是这的原因.
不知道是Hibernate不能自动支持mysql的级联删除吗,还是配置的原因?请教各位高手!
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/test
</property>
<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="myeclipse.connection.profile">db</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver</property> <property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="com/gl/test/Person.hbm.xml" />
<mapping resource="com/gl/test/School.hbm.xml" />
</session-factory>
解决方案 »
- 关于hibernate 的左外连接
- java 实现动态密码以及解密
- 项目在数据库连接上应用了单例模式有什么危害和好处,请教大家,虚席以待
- 为什么别人访问不了我电脑上的网站系统
- jxl number对象格式问题。。。
- spring mvc的MultiActionController绑定数据与form标签的结合使用问题?
- 1.mysql的JDBC驱动程序从哪里下载,如何安装 2.在JAVA中使用还要先在控制面板/数据源里进行设置吗
- 问题:struts中FindForward("XXX")到在哪里找路径?
- struts+validate+客户端验证 问题
- javax.xml中用什么方法和对象来接收request中的xml文档,急!
- SSH优点缺点?(面试题)
- JS表单问题
<set name="persons" inverse="true" cascade="all-delete-orphan" lazy="true" >
<key column="school_id"></key>
<one-to-many class="com.gl.test.Person" />
</set> 关系维护端已经在多的一端了
只能在多的一端进行删除!
方法不行的话(没理由)
不如试试10楼的方法
<key column="school_id"/>
<one-to-many class="com.gl.test.Person" />
</set> 关系维护端已经在多的一端了
只能在多的一端进行删除!
删除一条person数据,对School没有影响,
删除一条school数据,则对应的全部person全部自动删除Hibernate能够实现吗,我试验了好长时间,都不行。
各位高手帮帮忙啊?