在研究如何实现自定义命名策略(仅适用于表名)时,我偶然发现了一个我无法解决的不一致问题。(我在 JBoss 6.1.0.Final 和 PostgreSQL 9.1.9 上使用 hibernate-core 3.6.6.Final)
似乎有三个内置实现NamingStrategy
:
DefaultNamingStrategy
EJB3NamingStrategy
ImprovedNamingStrategy
默认值似乎设置为EJB3NamingStrategy
in org.hibernate.cfg.Configuration
。
然而,表名似乎是根据与上述都不匹配的策略设置的。
示例:
类名:package.ClassName
结果表名:classname
策略 1 和 2 简单地调用StringHelper.unqualify( className )
它简单地删除所有包名称和点,所以结果应该是ClassName
.
策略 3 删除所有包名和点,然后在每个驼峰字母前加上下划线,最后转换为小写,这应该 yield class_name
。
(hibernate 4.1.0.Final 的源代码在这些类中似乎没有变化。)
谁能帮我澄清一下?