有没有办法用Hibernate注册某种SchemaExportEventListener(这是我选择的名称),所以在生成DDL后我们可以对数据库进行一些更新(Hibernate不支持)?
我们需要在PostgreSQL列上设置不区分大小写的唯一约束,虽然这在PostgreSQL中是完全可能的,但在Hibernate / JPA注释中似乎不可能(@Table(uniqueConstraint)
和{{1} } @Column(columnDefinition)
完成我们想做的事。)
答案 0 :(得分:3)
有没有办法用Hibernate注册某种SchemaExportEventListener(这是我选择的名字)
据我所知,Hibernate没有这样的东西。
这样在生成DDL后我们可以对数据库进行一些更新(Hibernate不支持)吗?
但是,import.sql
功能可能会有所帮助。使用Hibernate,您可以在类路径的根目录中放置import.sql
文件,并在生成模式后执行(假设您使用的是create
或create-drop
)。引用Rotterdam JBug and Hibernate's import.sql博文:
import.sql: easily import data in your unit tests
Hibernate有一个简洁的小功能 这是严重缺乏记录和 未知。您可以执行SQL脚本 在
SessionFactory
创建期间 就在数据库架构之后 生成以新鲜的方式导入数据 数据库。您只需要添加一个文件 在类路径中命名为import.sql
root并设置create
或create-drop
作为你的hibernate.hbm2ddl.auto
财产。我用它来进行Hibernate Search 现在就开始行动了 查询章节。它初始化了我的 带有一组新数据的数据库 我的单元测试。 JBoss Seam也使用它 在各种例子中有很多。
import.sql
是一个非常简单的功能 但是在时间上非常有用。记得 SQL可能依赖于 你的数据库(啊便携性!)。#import.sql file delete from PRODUCTS insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('1', '630522577X', 'My Fair Lady', 19.98, '630522577X.jpg', 'My Fair blah blah...'); insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('2', 'B00003CXCD', 'Roman Holiday ', 12.98, 'B00003CXCD.jpg', 'We could argue that blah blah');
有关此内容的更多信息 功能,检查Eyal's blog,他 写了一篇关于它的精彩小条目。 请记住,如果您想添加其他内容 数据库对象(索引,表和 等等),您也可以使用auxiliary database objects功能。
这应该满足您的需求。