Hibernate将@Table(name)更改为小写

时间:2012-11-21 09:21:20

标签: hibernate jpa

我在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?怎么能避免呢?

1 个答案:

答案 0 :(得分:2)

如果您使用的是JPA 2.0,则说明:

可以通过指定持久性单元中的<delimited-identifiers/>元素来指定将持久性单元使用的所有数据库标识符视为分隔标识符。 对象/关系xml映射文件的persistence-unit-defaults元素。如果 <{1}}元素已指定,无法覆盖。

此设置应该使Hibernate使用表的大写名称,因为这是您在注释中指定名称的方式。