问题标签 [hbm2ddl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hibernate HBM2DDL 为主外键生成可为空的字段?
我正在使用 hbm2ddl(来自 hibernate3-maven-plugin 2.2)基于我的 JPA 注释实体生成 DDL。通常,这可以正常工作,但我最近介绍了一个使用由两个外键组成的复合键的实体,这导致 DDL 生成出现问题。
具体来说,生成的 DDL 指定主键列可以为空,而主键列不应该是这种情况。因此,MSSQL 无法创建主键约束,因为该列可以为空。
这是实体
该实体指定它使用 PricePK 作为其主键类,更重要的是,构成主键的两个 ManyToOne 实体不是可选的(这应该意味着 DDL 中的列“非空”)。这是 PricePK 类:
为 Price 表生成的 DDL 如下 - 请注意,currency_id 和 product_id 都允许为空:
当我尝试在 MSSql 中运行脚本时,出现以下(不足为奇)错误:
不成功:创建表 store.PRICE (version int null, amount numeric(19,2) null, currency_id int null, product_id int null, 主键 (currency_id, product_id)) 无法在表 'PRICE' 中的可空列上定义 PRIMARY KEY 约束.
知道为什么正在生成的 DDL 为这两个外键列指定“null”吗?
hibernate - 当 hibernate.hbm2ddl.auto 设置为创建时,如果 postgresql 需要,我如何让休眠执行 CREATE DATABASE
我正在使用spring-roo、gwt和hibernate来制作网站。我们正在使用内存数据库 HyperSonic,但我正在尝试切换到postgres。
如果我使用jdbc3 驱动程序,一切正常。唯一的问题是我必须在CREATE DATABASE
hibernate 之外单独执行语句,然后才能通过[hibernate.hbm2ddl.auto](http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-optional)
设置为创建来创建表。我可以设置他们的另一个选项来让休眠在CREATE DATABASE
必要时执行吗?
hibernate - 使用 Hibernate 的 TABLE_PER_CLASS 继承时,外键附加了随机数
我目前在我的域模型中有以下内容:
Hibernate 的 HBM2DDL 为这个映射创建了 2 个表:ItemA
和ItemB
. 两者都有表的ORG_ID
列和外键Organization
。但是,每个外键都附加了一个随机数(即 FK_ITEM_ORG98343)。如何指定每个表使用的外键?例如,我想拥有FK_ITEMA_ORG
and FK_ITEMB_ORG
。
更新
另请参阅后续问题:ForeignKey 注释是否仅由 HBM2DDL 用于生成架构?
hibernate - ForeignKey 注释是否仅由 HBM2DDL 用于生成模式?
我在使用 TABLE_PER_CLASS 继承策略时 Hibernate 如何生成外键名称时遇到问题:使用 Hibernate 的 TABLE_PER_CLASS 继承时,外键附加了随机数
所以我想知道是否可以简单地将注释替换为以下内容:
这样我总是知道回到生成的 DDL 并替换所有出现的 CHANGEME。Hibernate 是否对@ForeignKey
我不知道的属性做任何其他事情,或者这是一个很好的解决方法?
java - 如何跳过超类表的模式生成?Java/JPA/休眠/注释/Maven/hbm2ddl
我们的应用程序需要与另一个本地运行的应用程序共享现有的数据库表,因此,我希望引用该表但跳过为其生成 DDL。我还希望将应用程序模式中的表定义为别名或 MySQL 合并表,但我可以将其添加到手动脚本中,该脚本将在生成的模式脚本之前运行。
如何指定从 myapp-schema-ddl.sql 输出中省略 shared_schema 表的创建和更改表 DDL?
从 commons/src/main/java/com/company/shared/SharedSuperEntity.java:
从 myapp/src/main/java/com/company/shared/SharedSuperEntity.java:
从 myapp/src/main/resources/META_INF/persistence.xml:
在 myapp/pom.xml 中:
hibernate - 架构未在 hbmddl.auto = create.drop 上删除
我正在使用hbmddl.auto
set在hibernate配置文件中创建并使用它以网络模式连接到derby数据库(未嵌入,不知道是否相关)。
这是我的hibernate.cfg.xml
但是当我运行使用这个又名服务类的java程序时,我似乎没有删除数据库并重新创建它。正如评论所说(我从休眠示例中获取了配置文件)。
~~~~更新~~~~
我得出的结论是 hbm2ddl 没有根据以下行为删除架构
我有 2 个类,如下所示
和
并且相应的休眠配置是
现在,当我将上述课程更改为
和
以下打印到控制台
当我手动删除表并再次执行时,这似乎消失了。什么可能导致这种行为。
maven - Maven:调用多个生命周期的多个插件
我已经使用 maven 很长一段时间(几年)了,所以令我惊讶的是我以前从未遇到过这个问题,或者至少有某种处理它的方法......
我正在尝试调用以下插件/目标(按指定顺序):
- sql-maven-插件:执行
- 休眠3:hbm2ddl
- dbunit:操作
- 码头:运行
简而言之,我正在创建一个数据库、生成一个模式、插入数据,然后启动一个 webapp。但是,hbm2ddl 和 jetty:run 目标都会调用(fork)它们自己的生命周期阶段,这会导致其他一些绑定的插件目标多次运行。
这显然不是我想要的。有没有办法解决这个问题?
谢谢!!
hibernate - 序列问题为什么两个实体在使用 hbm2ddl 生成模式时共享相同的序列?
我hbm2ddl
在基于休眠的应用程序中使用来生成数据库模式。hibernate.hbm2ddl.auto
财产的价值是create-drop
。
我正在@Entity
为我的 POJO 类使用注释。
然而,在执行代码时,我不断获得递增的 Id 值。例如,对于 2 个表,Id(即 Prim Key)应以 1 开头。但在 中插入记录后Table 1
,序列从 的下一个值开始Table 2
。它应该从表 2 的 1 重新开始。我试过GenerationType.SEQUENCE
& GenerationType.AUTO
。没有任何作用:-(
mysql - 如何指示 hbm2ddl 为 MyISAM 引擎生成 sql
当我使用 hbm2ddl 命令从基于 JPA2 的注释自动生成 SQL 时,它会自动为 ENGINE=InnoDB 创建表
我应该对我的 JPA 模型类做些什么来为 ENGINE=MyISAM 生成 SQL
hibernate - 如何通过 JPA 注释将整数指定为一定长度
我不想将 id 声明为“INTEGER”,而是指定如上所述的长度限制。
我用
@Entity 类 Foo {
... }
我应该如何在我的 JPA 模型类中指定长度限制,以便 hbm2ddl 根据我的要求自动生成模式。