我在Hibernate中有一个Table Per Class继承。
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class A {
}
@Entity
@Table(name="B")
public class B extends A {
}
@Entity
@Table(name="C")
public class C extends A {
}
我只是想验证架构。我已经在db。中找到了B和C表。
我正在使用<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
,但我认为指定@Table(name)会覆盖命名策略的行为!
为什么hibernate将@Table中指定的名称转换为lowerCase并搜索b和c而不是B和C?怎么能避免呢?
答案 0 :(得分:2)
如果您使用的是JPA 2.0,则说明:
可以通过指定持久性单元中的<delimited-identifiers/>
元素来指定将持久性单元使用的所有数据库标识符视为分隔标识符。
对象/关系xml映射文件的persistence-unit-defaults元素。如果
<{1}}元素已指定,无法覆盖。
此设置应该使Hibernate使用表的大写名称,因为这是您在注释中指定名称的方式。