当我尝试映射实体时出现以下错误:
ORA-00942:表或视图不存在
我发现问题在于hibernate试图以“非大写”(小写)字母查找表的名称,但Oracle使用大写字母表格(尽管表格是用非大写字母创建的)大写字母)。 如果我添加注释 @Table 和 @Column 将名称用大写字母添加,我可以解决问题,但我不想添加这些注释。
我想知道是否有任何不同的方法可以做到。
SQL:
create table foo(
id integer not null
);
alter table foo
add constraint foo_pk
primary key (id);
不的实体:
@Entity
public class Foo {
@Id
private Long id;
//getter and setter
}
工作的实体:
@Entity
@Table(name = "FOO")
public class Foo {
@Id
private Long id;
//getter and setter
}
谢谢!
答案 0 :(得分:1)
您可以定义自定义NamingStrategy,以便将特定的表名和列名从您的实体转换为数据库。以下是一些example如何操作。
因此,您只需要创建NamingStrategy
接口的实现或扩展一些现有策略,使用您想要获得的行为修改它的行为,然后通过hibernate XML注册这个新策略配置参数hibernate.ejb.naming_strategy
或通过配置类。