проблема с удалением таблицы из базы данных hsqldb при использовании hsqldb / hibernate с моим проектом maven - PullRequest
0 голосов
/ 23 августа 2011

Я очень новичок в этом. И я пытаюсь настроить проект Maven с Net-Beans с помощью hsqldb и hibernate. Я настроил базу данных, и я могу сохранить некоторые данные в базу данных. Я использую режим файла. и это мое соединение URL

 "jdbc:hsqldb:file:C:/data/findb"

однако проблема, с которой я сталкиваюсь, заключается в том, что мои таблицы базы данных будут отбрасываться при каждом выполнении и обновляться заново. Я не хочу, чтобы это случилось. Я хочу создать таблицы только один раз и иметь возможность обновлять их потом.

Вот фрагмент моего файла конфигурации

  boolean found = false;
        String URL = "jdbc:hsqldb:file:C:/data/findb";

        Configuration cfg = new Configuration();

        if (!found) {
            cfg.setProperty("hibernate.hbm2ddl.auto", "create");
        } else {
            cfg.setProperty("hibernate.hbm2ddl.auto", "update");
        }

        cfg.setProperty("hibernate.connection.driver_class",
                "org.hsqldb.jdbcDriver");
        cfg.setProperty("hibernate.connection.url", URL);
        cfg.setProperty("hibernate.connection.username", "sa");
        cfg.setProperty("hibernate.connection.password", "1234");
        cfg.setProperty("hibernate.connection.pool_size", "20");
       // cfg.setProperty("hibernate.connection.hsqldb.default_table_type",
            //    "cached");

        sessionFactory = cfg.configure().buildSessionFactory();

И, насколько я понимаю, этот бит должен был предотвращать отбрасывание таблиц при каждом создании, так как я использую оператор if-else для создания if not и обновления для if.

Вот так начинается mydb.log

/*C4*/SET SCHEMA PUBLIC
 drop table FinPlan if exists
 drop table PersonalAssets if exists
 drop table TB_UNIQUEID if exists

Что мне не хватает ?? любая помощь будет оценена. Заранее спасибо.

1 Ответ

2 голосов
/ 23 августа 2011

hibernate.hbm2ddl.auto = create автоматически воссоздает ваши таблицы при каждом выполнении. Так как вы установили значение false, hibernate.hbm2ddl.auto всегда будет "создавать"

...