11

dropwizard と hibernate のチュートリアルを問題なく実行しました。現在、エンティティに自明ではない注釈があり、休止状態でテーブルを生成したいと考えています。では、休止状態の構成を変更するにはどうすればよいですか? hibernate.cfg.xml を指定できますか? 可能であれば、接続を再度設定する必要がありますか?

このPRを見つけましたが、まだ一般公開されていないようです (jar に hibernateBundle.configure がありません)。

しかし、多分私は間違ったものを探しています。これまでのところ、 hibernate.hbm2dll.auto を設定しようとしています。結局のところ、 Dropwizard でハイバネート テーブルの生成を有効にする別の方法があるかもしれません。

ありがとうございました。


編集: hbm2ddl.auto を使用する代わりにスキーマを明示的に作成するために、別の角度から問題に取り組みました。提案された回答を参照してください。

4

1 に答える 1

24

編集:問題は解決しました!YAML 構成でこれを行うと、現在動作します: (Dropwizard 0.7.1)

database:
    properties:
        hibernate.dialect: org.hibernate.dialect.MySQLDialect
        hibernate.hbm2ddl.auto: create

この回答から)


古い答え:

これは私が現在使用しているものです。hibernate の SchemaExport を呼び出して、スキーマを SQL ファイルにエクスポートするか、データベースを変更するクラスです。エンティティを変更した後、アプリケーションを実行する前に実行するだけです。

public class HibernateSchemaGenerator {

    public static void main(String[] args) {
        Configuration config = new Configuration();

        Properties properties = new Properties();

        properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
        properties.put("hibernate.connection.url", "jdbc:mysql://localhost:3306/db"); 
        properties.put("hibernate.connection.username", "user");
        properties.put("hibernate.connection.password", "password");
        properties.put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
        properties.put("hibernate.show_sql", "true");
        config.setProperties(properties);

        config.addAnnotatedClass(MyClass.class);

        SchemaExport schemaExport = new SchemaExport(config);

        schemaExport.setOutputFile("schema.sql");
        schemaExport.create(true, true);

    }

}

以前は休止状態ツールについて知りませんでした。したがって、このコード例をサービスの初期化で使用して、 のように動作させることができますhbm2ddl.auto = create

私は現在、(eclipse または maven から) クラスを実行して、出力 SQL を生成および確認するだけで使用しています。

于 2013-06-18T21:42:50.060 に答える