繁体   English   中英

告诉hibernate hbm2ddl不要创建单独的表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM