如何取消hibernate hbm2ddl.auto 自动创建外键

利用hbm2ddl自动创建数据库表时,会同时创建表的外键关联。配置如下。

<prop key="hibernate.hbm2ddl.auto">create</prop>

要取消外键的自动创建,需要配置foreign-key="none"。

hibernate的更新log有如下说明:

Changes in version 2.1.9 (xx.x.xxxx)
------------------------------------
* foreign-key="none" can be used to disable generation of a foreign key.

因此,项目中关于hibernate ORM的配置可以用注解方式,也可以用配置文件方式。

用配置文件方式可以在xml相应实体类进行如下配置(注意其中的foreign-key="none"):

<class name="org.jbpm.identity.User" table="JBPM_ID_USER" discriminator-value="U">
    <id name="id" column="ID_">
      <generator class="native" />
    </id>
    <discriminator type="char" column="CLASS_" />
    <property name="name" column="NAME_" />
    <property name="email" column="EMAIL_" />
    <property name="password" column="PASSWORD_" />
    <set name="memberships" cascade="all">
      <key column="USER_" />
      <one-to-many class="org.jbpm.identity.Membership" />
    </set>
    <set name="permissions" cascade="all" table="JBPM_ID_PERMISSIONS">
      <key column="ENTITY_" foreign-key="none" />
      <element type="org.jbpm.identity.hibernate.PermissionUserType">
        <column name="CLASS_" />
        <column name="NAME_" />
        <column name="ACTION_" />
      </element>
    </set>
  </class>

用注解方式可以在相应类字段的get方法前配置注解如下:

@JoinColumn(name="parent_id")
@ForeignKey( name = "none" )

以上。

时间: 2024-11-10 06:54:18

如何取消hibernate hbm2ddl.auto 自动创建外键的相关文章

[转] Hibernate不能自动建表解决办法(hibernate.hbm2ddl.auto) (tables doesn&#39;t exist)

转自: http://blog.csdn.net/biangren/article/details/8010018 最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且在mysql中新建了一个hibernate数据库,仅此而已.然而预想不到的事情发生了……程序写好之后,运行,报错 Hibernate: insert into news_table (title

Hibernate_配置参数hibernate.hbm2ddl.auto

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:<properties>           <property name="hibernate.show_sql" value="true" />                 <property name="hibernate.hbm2ddl.auto" value="create" />&

Mingyang.net:hibernate.hbm2ddl.auto配置详解【转】

原文地址:http://www.cnblogs.com/feilong3540717/archive/2011/12/19/2293038.html hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下: <properties> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.

hibernate.hbm2ddl.auto配置详解

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:<properties><property name="hibernate.show_sql" value="true" /> <property name="hibernate.hbm2ddl.auto" value="create" /></properties> Hibernat

hibernate.hbm2ddl.auto的值

其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构.如果不是此方面的需求建议set value="none".create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因.create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除.upda

JEECG hibernate.hbm2ddl.auto

配置hibernate根据实体类自动建表功能 - lixuyuan的专栏 - CSDN博客https://blog.csdn.net/lixuyuan/article/details/8057119 hibernate.hbm2ddl.auto配置详解 - Talo - 博客园https://www.cnblogs.com/talo/articles/1662244.html (1)jeecg入门-初始化部署_lsfhack_新浪博客http://blog.sina.com.cn/s/blog_

websphere启动报/WEB-INF/applicationContext-orm- hibernate.xml]: Could not resolve placeholder &#39;hibernate.hbm2ddl.auto&#39; in string value &quot;${hibernate.hbm2ddl.auto}&quot;

启动websphere错误: [17-11-20 16:19:52:834 CST] 0000008e webapp I com.ibm.ws.webcontainer.webapp.WebApp log SRVE0292I: Servlet 消息 - [market_war#market.war]:.Initializing Spring root WebApplicati onContext [17-11-20 16:19:53:361 CST] 0000008e SystemOut O 2

sql server2008如何创建外键

以前创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没有外键时不行的. 建外键的前提是此外键必须是另外一个表的主键.建外键的步骤: 第一步打开要建外键表的设计器,右击选择“关系”. 然后弹出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮, 就会弹出另外一个窗体让我们选择主键表和列,选好之后点击确定. 然后我们展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何操作”.“级联”.“设置为NULL”.“设

在SQL Server 中创建外键

建外键的前提是此外键必须是另外一个表的主键. 建外键的步骤: 第一步打开要建外键表的设计器,右击选择“关系”. 然后弹出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮, 就会弹出另外一个窗体让我们选择主键表和列,选好之后点击确定. 然后我们展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何操作”.“级联”.“设置为NULL”.“设置默认值”. 默认的不执行任何操作.如果是“不执行任何操作”,当我们删除或更新主键表的数据时,会告诉用户不能