【发布时间】: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 类中更改我的属性名称,但我仍然面临这个问题。请让我知道我在哪里做错了?
【问题讨论】:
-
为首字母添加 type="character" 并试一试
-
@SureshkumarPanneerselvan,我现在试过了,但得到了同样的错误信息。
-
谢谢,M21B8,它也解决了我的问题! stackoverflow.com/a/20969153/3270737