当我尝试映射实体时出现以下错误:
ORA-00942: 表或 View 不存在
我发现问题是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
}
谢谢!
最佳答案
您可以定义自定义 NamingStrategy ,将特定的表名和列名从实体转换为数据库。这是一些example怎么做。
因此,您所需要做的就是创建 NamingStrategy
接口(interface)的实现或扩展一些现有策略,用您想要获得的行为修改其行为,然后通过 hibernate XML 配置注册这个新策略参数 hibernate.ejb.naming_strategy
或通过配置类。
关于java - ORA-00942 : table or view does not exist - Hibernate with non-capital letters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32977335/