6

埋め込みダービーで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" />

更新:ダービーを初めて使用したので、情報が不足している可能性があるので、質問があります:

ここのようにEmbeddedDerbyを構成する必要がありますか?

http://db.apache.org/derby/papers/DerbyTut/install_software.html

更新2:データベースにデモデータを挿入するクラスパスの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.
4

3 に答える 3

3

クラスパスから import.sql ファイルを削除してアプリケーションを実行した後、データベースが作成されたというエラーが見つかりましたが、http://issues.apache.org/jira/ の問題により、hbm2ddl によってテーブルが作成されませんでした。ブラウズ/DERBY-789 はここに記載されています: Apache derby と hbm2ddl を使用した制約の問題

データベース自体によって処理されるため、主キーを一意として定義することはできません。

そのため、主キーから一意の属性を削除すると、エラーはなくなりました。

于 2011-12-23T19:59:58.610 に答える
0

申し訳ありませんが、私自身 Derby を使用したことはありませんが、問題は、Hibernate がデータベース、データベース ユーザー、またはデータベース スキーマを作成できないことだと思います。これは単なる推測ですが、エラー メッセージは、ユーザーのデータベース スキーマも必要であることを示しています。事前にデータベース、データベース ユーザー ルート、およびスキーマ ルートを作成してから、Hibernate に接続してテーブルを作成してみてください。

于 2011-12-23T12:13:41.610 に答える