3

我在 Hibernate 中有一个每个类继承的表。

@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) 会覆盖命名策略的行为!

为什么休眠将@Table中指定的名称转换为小写并搜索b和c而不是B和C?怎么能避免呢?

4

1 回答 1

2

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

<delimited-identifiers/>通过指定对象/关系 xml 映射文件的 persistence-unit-defaults 元素中的元素,可以指定将用于持久性单元的所有数据库标识符视为分隔标识符。如果 <delimited-identifiers/>指定了元素,则不能覆盖它。

这个设置应该让 Hibernate 使用你的表的大写名称,因为这是你在注解中指定名称的方式。

于 2012-11-26T16:06:33.263 回答