我配置hibernate
其中hibernate.cfg.xml配置如下
- XML code
<session-factory> <!--配置数据库连接 --> <property name="connection.url"> jdbc:oracle:thin:@localhost:1521:orcl </property> <property name="connection.username">scott</property> <property name="connection.password">tigger</property> <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> <!-- 是否打印Sql语句 --> <property name="hibernate.show_sql">true</property> <mapping resource="com/szy/hibernate/user.hbm.xml" /> </session-factory>
user.hbm.xml文件如下配置
- XML code
<hibernate-mapping package="com.szy.hibernate"> <class name="User" table="t_user"> <id column="ID" name="id" length="10" type="java.lang.String"> <generator class="assigned"/> </id> <property column="USERNAME" name="username" type="java.lang.String" length="20" not-null="true" unique="true"/> <property column="PASSWORD" name="password" type="java.lang.String" length="20"/> <property column="AGE" generated="never" lazy="false" name="age" type="java.lang.Integer"/> </class></hibernate-mapping>
数据库是通过以下代码生成的
- Java code
Configuration config=new Configuration().configure(); SchemaExport export=new SchemaExport(config); export.create(true, true);
测试代码如下
- Java code
User user=new User(); user.setId("001"); user.setUsername("coolszy"); user.setPassword("test"); user.setAge(21); Session session=HibernateUtil.getSession(); Transaction ts=session.beginTransaction(); session.save(user); ts.commit();
其中HibernateUtil是过去session的工具类
运行时老是报下面的错误
Exception in thread "main" java.lang.AbstractMethodError:
oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:123)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2119)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2115)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1339)
at com.szy.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:10)
at com.szy.hibernate.Test.main(Test.java:14)
不知怎么解决,请高手赐教
------解决方案--------------------------------------------------------
<property column="PASSWORD" name="password" type="java.lang.String" length="20"/>
type是指hibernate的数据类型吧,应该写成string
------解决方案--------------------------------------------------------
楼上正解