【发布时间】:2015-10-13 18:21:20
【问题描述】:
我是 Hibernate 框架的新手。我创建了一些代码来将数据存储在数据库中,但我无法存储它。它会抛出错误。
线程“主”org.hibernate.MappingException 中的异常:无法在 org.hibernate.id.IdentifierGeneratorFactory.create 处实例化 id 生成器
请告诉我我能做些什么来解决它?
我的目录结构在这里。
Employee.java
package com.hib;
public class Employee {
private int id;
private String firstName, lastName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
员工.hbm.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.hib.Employee" table="emp1000">
<id name="id">
<generator class="assined"></generator>
</id>
<property name="firstName"></property>
<property name="lastName"></property>
</class>
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hbm2ddl.auto">update</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:oracle12c</property>
<property name="connection.username">AtulRai</property>
<property name="connection.password">atulrai</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<mapping resource="employee.hbm.xml" />
</session-factory>
StoreData.java
package com.hib;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class StoreData {
public static void main(String[] args) {
// creating configuration object
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");// populates the date of
// configuration file
// creating session object factory
SessionFactory factory = cfg.buildSessionFactory();
// creating session object
Session session = factory.openSession();
// creating transaction object
Transaction t = session.beginTransaction();
Employee e1 = new Employee();
e1.setId(1111);
e1.setFirstName("Atul");
e1.setLastName("Rai");
// persisting the object
session.persist(e1);
// transaction is commited
t.commit();
session.close();
System.out.println("Data saved successfully");
}
}
以上都是我的代码,但是当我执行它时出现以下错误
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.MappingException: could not instantiate id generator
at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:98)
at org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:152)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:192)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1291)
at com.hib.StoreData.main(StoreData.java:17)
Caused by: org.hibernate.MappingException: could not interpret id generator strategy: assined
at org.hibernate.id.IdentifierGeneratorFactory.getIdentifierGeneratorClass(IdentifierGeneratorFactory.java:109)
at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:92)
... 4 more
【问题讨论】:
-
你真的需要使用hbm文件吗?我建议使用@annotations
-
如何在hibernate中使用@annotations?
-
我回答了你一些关于 Hibernate Annotations 的信息,如果有帮助请告诉我。
标签: java eclipse hibernate log4j