Я планирую использовать Apache Cayenne в проекте, но я борюсь с тем, чтобы он был правильно настроен.Установить путь базы данных в Cayenne
Cayenne tutorial показывает, как установить местоположение базы данных в 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
Это тестовый URL в памяти, который я установил на C ayenneModeller, а не тот, который я установил в setupDataBase
(и да, я сделал очень то, что этот метод вызывается). Кроме того, файлы базы данных не создаются (я проверял с помощью отладчика, что путь правильный).
Итак, каково решение этой проблемы?
Это сделало трюк, спасибо. – DarkDust