我正在尝试找到一种方法来告诉 Hibernate“无论何时创建此表,然后立即插入这些行”
从 Hibernate 3.1 开始,您可以import.sql
在 Hibernate 的运行时类路径中包含一个调用的文件,并且在模式导出时,Hibernate 将在模式导出后执行该文件中包含的 SQL 语句。
此功能已在Rotterdam JBug 和 Hibernate 的 import.sql博客文章中宣布:
Hibernate 有一个简洁的小功能,但文档严重不足且未知。SessionFactory
您可以在数据库模式生成后立即在创建期间执行 SQL 脚本,以将数据导入新数据库。您只需要添加一个import.sql
在您的类路径根目录中命名的文件,并将其设置create
为
create-drop
您的
hibernate.hbm2ddl.auto
属性。
既然我已经开始了查询一章,我就将它用于 Hibernate Search in Action。它为我的单元测试使用一组新数据初始化我的数据库。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 的博客,他写了一篇关于此功能的不错的小条目。请记住,如果您想添加额外的数据库对象(索引、表等),您还可以使用辅助数据库对象功能。
它仍然没有真正记录在案。