我最近在我们的数据库中添加了同义词。这些同义词包含整个实体信息,因此具有自己的映射文件。连接到同义词不是问题。问题出在使用hbm2ddl工具时。
如果我包含同义词映射文件,hbm2ddl工具会将同义词表创建为普通表,它应该被忽略。我不确定如何将实体映射标记为同义词(或者如果可能的话),并限制hibernate为该同义词创建新的表。
如果我排除映射文件,则该工具不会通过验证,因为其他文件引用了同义词实体。示例:
<many-to-one name="creator" class="com.entities.MySynonymEntity" cascade="refresh" foreign-key="MY_SYNM_FKC" not-null="false" lazy="proxy" fetch="select">
<column name="MY_SYNM_FK" not-null="false" sql-type="NUMBER(19)" />
</many-to-one>在这里,映射文件属于一个实体,该实体位于真正的数据库中,但引用的是其数据由同义词填充的实体。
当涉及到同义词时,为hbm2ddl工具设置映射文件的正确方式是什么?
非常感谢,JP
发布于 2015-07-06 14:45:48
我认为hbm2ddl只适用于表,而不适用于同义词。我建议保留hibernate.hbm2ddl.auto= ""的值,而不是验证。
同样的讨论也出现在hibernate论坛上
发布于 2019-01-21 16:44:08
我添加此答案是因为这不是禁用验证的可接受答案。有时,您需要验证模式。
在Hibernate 5.1中,验证也适用于同义词,应该将以下属性hibernate.synonyms设置为true。
https://stackoverflow.com/questions/30177039
复制相似问题