[英]Tell hibernate hbm2ddl not create individual table
有没有办法告诉hibernate的hbm2ddl不创建特定的表但仍然让Hibernate识别该模型。
问题是模型映射到视图,我希望有一个内存数据库(在启动时为空并在终止时删除)进行测试,因此,有两组映射是不可能的。
好吧,这并没有完全回答这个问题(可能没有办法用当前版本来做),但它确实解决了手头的问题。
所以,最后我让hibernate创建表,但后来强行删除它并放入我自己的create view
语句。 似乎有两种方法可以做到这一点。
第一种方法是使用<database-object>
元素,特别是名为<create>
的子元素,如下所示:
<class table="MY_VIEW"></class>
<database-object>
<create>
drop table MY_VIEW;
create view MY_VIEW etc etc;
</create>
</database-object>
另一种方法是在import.sql中输入相同的内容。 这件事没有证件。
我不知道为什么,或许它被弃用了。
我认为是这样,因此我不会在这里提出太多细节。
它没有被弃用,但我发现以前的方法不那么痛苦(创建视图有几行长)。
我遇到了类似的问题。 我正在尝试扩展现有的模式,所以我只想创建(删除/更改/等)我的“新”表。 我找不到任何方法告诉hbm2ddl工具在其模型中使用这些实体进行验证,但是没有为它们生成SQL。
所以我编写了一个简单的Perl脚本来从生成的SQL中删除这些语句。 它被设计为在shell脚本管道中工作,如下所示:
cat your-sql-file.sql | scrub-schema.pl table1 table2 table3 ... > scrubbed.sql
代码在这里可用(使用Apache v2许可证):
https://github.com/cobbzilla/sql-tools/blob/master/scrub-schema.pl
我希望这是有帮助的。
有没有办法告诉hibernate的hbm2ddl不创建特定的表
AFAIK, hbm2ddl
是“全有或全无”,你不能排除特定的表。 但是,如果要更改DDL,可以使用它将生成的DDL输出到文件,而不是自动将其导出到数据库。 这会有帮助吗?
但仍然有Hibernate认可的模型。
我没有得到那个部分。 你的意思是让Hibernate根据映射validate
数据库吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.