hibernate oracle11g 无法创建生成表
数据库版本为 oracle11g
hibernate版本为 hibernate-release-4.1.6.Final
数据库中名为ORCL,创建了一个用户为 hibernate 密码为hibernate 并给了dba权限。
相关文件
User.java
package com.hibernate;import java.util.Date;public class User { private String id; private String name; private String password; private Date createDate; private Date expireDate; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public Date getExpireDate() { return expireDate; } public void setExpireDate(Date expireDate) { this.expireDate = expireDate; } }
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping > <class name="com.hibernate.User" table="t_user"> <id name="id" column="user_id"> <generator class="uuid"/> </id> <property name="name" column="user_name" /> <property name="password" /> <property name=""></property> <property name="createDate" /> <property name="expireDate" /> </class></hibernate-mapping>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="hibernate.connection.username">hibernate</property> <property name="hibernate.connection.password">hibernate</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:ORCL</property> <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> <mapping resource="com/hibernate/User.hbm.xml" /> </session-factory></hibernate-configuration>
package com.hibernate;import org.hibernate.cfg.Configuration;import org.hibernate.tool.hbm2ddl.SchemaExport;public class ExportDb { /** * @param args */ public static void main(String[] args) { //默认读取hibernate.cfg.xml文件 Configuration cfg=new Configuration().configure(); SchemaExport export=new SchemaExport(cfg); export.create(true,true); }}
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
2012-8-27 23:28:56 org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.6.Final}
2012-8-27 23:28:56 org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
2012-8-27 23:28:56 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
2012-8-27 23:28:56 org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
2012-8-27 23:28:56 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
2012-8-27 23:28:56 org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: com/hibernate/User.hbm.xml
2012-8-27 23:28:56 org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
2012-8-27 23:28:56 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:687)
at org.hibernate.mapping.Column.setName(Column.java:86)
at org.hibernate.cfg.HbmBinder.bindColumns(HbmBinder.java:1143)
at org.hibernate.cfg.HbmBinder.bindColumnsOrFormula(HbmBinder.java:1586)
at org.hibernate.cfg.HbmBinder.bindSimpleValue(HbmBinder.java:1181)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2164)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2122)
at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:406)
at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:321)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:172)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3408)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3400)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3388)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1341)
at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:931)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:188)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:156)
at com.hibernate.ExportDb.main(ExportDb.java:16)
请教大侠指点一二,不胜感激~
[解决办法]
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
String越界,
User.hbm.xml里的 <property name=""></property>是干嘛用的?去掉试试
[解决办法]
表字段五个,你映射文件却配置了六个。
[解决办法]
日志楼主标注红色 Configured SessionFactory: null 这个应该没有啥问题。
SchemaExport这个类不知道是不是创建了sessionfactory
sessionFactory = configuration.buildSessionFactory();
<property name=""></property> 这个是什么东东?
<property name="hbm2ddl.auto">update</property>
<!-- 显示Hibernate持久化操作所生成的SQL -->
<property name="show_sql">true</property>
这些东西配置了没有呢?