Hibernate: переопределение файла конфигурации xml другим файлом - PullRequest
2 голосов
/ 25 мая 2011

У меня есть исходное дерево, состоящее из исходного и тестового классов.Когда я запускаю тесты, я хотел бы использовать <property name="hbm2ddl.auto">create</property>, а при запуске кода я хотел бы использовать значение validate вместо create.Я подумал использовать два файла конфигурации, один со всеми свойствами и содержащий hbm2ddl.auto для проверки, а другой с hbm2ddl.auto для создания.Я надеялся, что следующий код позволил бы мне прочитать из тестов базовый файл и переопределить только свойства hbm2ddl.auto, но это не работает (значение hbm2ddl.auto по-прежнему читается из hibernate.cfg.xml.

Configuration configuration = new Configuration();
configuration = configuration.
    configure("hibernate.cfg.xml").
    addResource("hibernate-test.cfg.xml");

Как получить два разных значения для свойства без репликации всего файла конфигурации?

Ответы [ 2 ]

5 голосов
/ 14 июля 2011

Мне кажется, что когда у вас есть только несколько значений для переопределения, одним простым подходом является загрузка конфигурации xml как обычно, а затем программный вызов setProperty, например:

Configuration configuration = new Configuration();
configuration = configuration.configure("hibernate.cfg.xml");
configuration.setProperty("hibernate.hbm2ddl.auto", "create-drop");

hbm.xml файлы не позволяют переопределять значения с addResource(...), как я пытался сделать, значения только добавляются, а не переопределяются

0 голосов
/ 25 мая 2011

У меня была проблема с попыткой программно загрузить другой конфиг.Чтобы обойти это, я использовал другой файл hibernate.properties (вместо xml config).Вы можете установить альтернативное значение hibm2ddl в этом файле свойств и загрузить его, используя следующий код:

        Properties props = new Properties();
        props.load(new FileInputStream(propFile));
        configuration = new Configuration().setProperties(props);

Попробуйте и посмотрите, подходит ли это вам.

Imp: не вызывать конфигурацию.настройка ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...