我正在研究一个简单的 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 ...
}
hibernate 映射文件:
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 ERROR SchemaUpdate:235 - HHH000388: Unsuccessful: create table person1 (pid varchar2(255) not null, birthday date, initial char(1), first varchar2(255), last varchar2(255), primary key (pid))
15:20:45,376 ERROR SchemaUpdate:236 - ORA-00904: : invalid identifier
我尝试更改 Person
类和 Name
类中的属性名称,但我仍然面临这个问题。请让我知道我哪里做错了?
最佳答案
无效标识符并不意味着您的主键错误,它意味着其中一个列标识符无效。我相信您的问题是“初始”列,这是 Oracle 中的保留字。
http://docs.oracle.com/cd/B19306_01/server.102/b14200/ap_keywd.htm
关于java - ORA-00904 : : invalid identifier Issue with Hibernate Dependent objects program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968840/