Hibernate:用另一个文件覆盖xml配置文件

cda*_*win 2 java unit-testing hibernate

我有一个由源代码和测试类组成的源代码树.当我运行测试时,我想<property name="hbm2ddl.auto">create</property>在运行代码时使用,而我想使用validate值而不是create.我想使用两个配置文件,一个包含所有属性,包含hbm2ddl.auto设置为validate,另一个配置为hbm2ddl.auto设置为create.我希望以下代码允许我从测试中读取基本文件并覆盖唯一的hbm2ddl.auto属性,但它不起作用(hbm2ddl.auto的值仍然是从hibernate.cfg读取的值). XML.

Configuration configuration = new Configuration();
configuration = configuration.
    configure("hibernate.cfg.xml").
    addResource("hibernate-test.cfg.xml");
Run Code Online (Sandbox Code Playgroud)

如何在不复制整个配置文件的情况下为属性设置两个不同的值?

cda*_*win 5

在我看来,当你只有几个值要覆盖时,一个简单的方法是像往常一样加载xml配置,然后以setProperty编程方式调用,如下所示:

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

hbm.xml文件不允许覆盖addResource(...)我试图做的值,只会添加值而不会覆盖这些值