2

プロジェクトで Apache Cayenne を使用する予定ですが、実際に正しくセットアップするのに苦労しています。

Cayenne チュートリアルは、CayenneModeller でデータベースの場所を設定する方法を示しています。私の問題は、実行時に動的に決定されるパスで Apache Derby を使用したいのですが、実際に Cayenne にそのパスを使用させる方法がわかりません。

私は次のようにパスを設定しようとしました:

private static boolean setupDataBase() {
    String path = Globals.USER_DATA_DIRECTORY + File.separator + "db";
    try {
        DataSource dataSource = new PoolManager(
                "org.apache.derby.jdbc.EmbeddedDriver",
                "jdbc:derby:" + path + ";create=true",
                1,
                1,
                null,
                null
        );
        Configuration configuration = Configuration.getSharedConfiguration();
        DataDomain domain = configuration.getDomain();
        DataNode node = domain.getNode("MaciNode");
        node.setDataSource(dataSource);
        return true;
    } catch (SQLException e) {
        e.printStackTrace();
        return false;
    }
}

しかし、後で を呼び出すとDataContext.createDataContext()、コンソールのログに次のように表示されます。

情報: 接続プールが作成されました: jdbc:derby:memory:testdb;create=true

これは、私が設定したものではなく、CayenneModeller で設定したインメモリ テスト URL ですsetupDataBase(はい、そのメソッドが呼び出されるようにしました)。また、データベース ファイルは作成されません (パスが正しいことをデバッガーで確認しました)。

では、この問題に対する標準的な解決策は何ですか?

4

1 に答える 1