【问题标题】:ORA-00904: : invalid identifier Issue with Hibernate Dependent objects programORA-00904: : Hibernate 相关对象程序的标识符无效问题
【发布时间】:2014-01-24 23:18:12
【问题描述】:

我正在开发一个简单的hibernate dependent objects 程序,使用Oracle 作为我的数据库。

这是我的 POJO 课程:

人物

public class Person {
    private java.util.Date birthday;
    private Name name;
    private String key;
    ... getters & setters ...
}

姓名

public class Name {
    char initial;
    String first;
    String last;
        ... getters & setters ...
}

休眠映射文件:

person.hbm.xml

<hibernate-mapping>
    <class name="Person" table="person1">
        <id name="Key" column="pid" type="string">
            <generator class="uuid" />
        </id>
        <property name="birthday" type="date" />
        <component name="Name" class="Name"> <!-- class attribute optional -->
            <property name="initial" />
            <property name="first" />
            <property name="last" />
        </component>
    </class>
</hibernate-mapping>

我已在我的hibernate.cfg.xml 文件中将hbm2ddl.auto 属性设置为update,以便在我执行程序时创建表。

这是我尝试保存 Person 对象实例的简单程序:

public class Program {
    public static void main(String[] args) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();

        Name name = new Name();
        name.setFirst("First");
        name.setLast("First");
        name.setInitial('I');

        Person person = new Person();
        person.setBirthday(new Date());
        person.setName(name);

        session.save(person);

        session.getTransaction().commit();
        HibernateUtil.getSessionFactory().close();
    }
}

现在当我执行这个程序时,我在创建表时遇到了错误:

15:20:45,376 错误 SchemaUpdate:235 - HHH000388:不成功:创建 表person1(pid varchar2(255)不为空,生日日期,初始 char(1),第一个 varchar2(255),最后一个 varchar2(255),主键 (pid))

15:20:45,376 错误 SchemaUpdate:236 - ORA-00904: : 无效标识符

我尝试在 Person 类和 Name 类中更改我的属性名称,但我仍然面临这个问题。请让我知道我在哪里做错了?

【问题讨论】:

标签: java oracle hibernate


【解决方案1】:

无效标识符并不意味着您的主键错误,它意味着其中一个列标识符无效。我相信您的问题是“初始”列,它是 Oracle 中的保留字。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/ap_keywd.htm

【讨论】:

  • 非常感谢,通过提供不同的列名解决了问题。
猜你喜欢
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 2019-08-27
相关资源
最近更新 更多