【发布时间】:2012-01-26 18:36:59
【问题描述】:
我正在使用带有嵌入式 derby 的 hibernate,并且我希望 hibernate 创建数据库和表,所以我尝试了以下配置,但我收到了错误:
java.sql.SQLException: Schema 'ROOT' does not exist
这里/s我的配置:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.myapp.domain" />
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.DerbyDialect
hibernate.hbm2ddl.auto=create
hibernate.show_sql=false
hibernate.format_sql=false
</value>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="url" value="jdbc:derby:test;create=true" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
更新:这是我第一次使用 derby,所以我可能缺少一些信息,所以我有一个问题:
我是否必须像这里一样配置 Embedded Derby:
http://db.apache.org/derby/papers/DerbyTut/install_software.html
更新2:我删除了classpath上负责在数据库中插入demo数据的import.sql脚本文件,发现创建数据库表时出错:
1202 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - Running hbm2ddl schema export
1202 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - exporting generated schema to database
1359 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - Unsuccessful: create table users (user_id bigint generated by default as identity unique, address varchar(255), email varchar(155) not null, mobile varchar(25), name varchar(25) not null, password varchar(255) not null, primary key (user_id))
1359 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - Constraints 'SQL111223214919671' and 'SQL111223214919670' have the same set of columns, which is not allowed.
1359 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - schema export complete
1360 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Warning: 10000, SQLState: 01J01
1360 [main] WARN org.hibernate.util.JDBCExceptionReporter - Database 'test' not created, connection made to existing database instead.
【问题讨论】:
-
从未使用过德比。但是您是否为数据库定义了用户“root”(可以访问测试库)
-
好吧,我只是尝试了这里的配置,我认为它应该使用上面的用户/密码stackoverflow.com/questions/8459284/…创建数据库
-
这里有一个嵌入式驱动程序 tut:db.apache.org/derby/papers/DerbyTut/embedded_intro.html。但是你的代码看起来不错
-
faq 表示该架构是在创建该架构中的某些内容时创建的。你能看到执行了哪些sql语句吗?也许休眠(或春天)从这里开始。
-
@Vinze,@oers 我更新了帖子,请指教。
标签: hibernate jakarta-ee derby javadb hbm2ddl