java - ORA-00942 : table or view does not exist - Hibernate with non-capital letters

标签 java oracle hibernate

当我尝试映射实体时出现以下错误:

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/

相关文章:

java - Hibernate 控制台应用程序中的异常

java - 带有 jib 的 JRE 版本 (Docker)

java - 带有单选按钮的对话框保存共享首选项,但不保存行为

oracle - PL/SQL Append_Values 提示给出错误消息

sql - 在多个位置模拟和操作分区数据库

java - oracle database for jdbi 如何支持 CREATE TABLE IF NOT EXISTS?

java - 简单的 Hibernate 映射建议

java - Hibernate:如何获得反向连接的实体(一对一)

java - 从单选组值中选择一个并向下滚动并在 Recycler View 中自动选择一些项目(初学者)

Java - repaint() 方法被调用一次,然后它不显示任何内容