【问题标题】:Hibernate changes @Table(name) to lowercaseHibernate 将 @Table(name) 更改为小写
【发布时间】:2012-11-09 12:11:01
【问题描述】:

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

【问题讨论】:

标签: hibernate jpa


【解决方案1】:

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

可以通过在 对象/关系 xml 映射文件的 persistence-unit-defaults 元素。如果 <delimited-identifiers/> 元素已指定,不能被覆盖。

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

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 2012-01-26
    • 2013-09-11
    • 2011-04-25
    • 1970-01-01
    • 2020-01-18
    • 2010-09-25
    • 1970-01-01
    • 2020-10-16
    相关资源
    最近更新 更多