如何解决休眠:用另一个文件覆盖xml配置文件
| 我有一个由源和测试类组成的源树。当我运行测试时,我想使用the0ѭ,而在运行代码时我想使用a1ѭ值而不是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\");
如何在不复制整个配置文件的情况下为属性提供两个不同的值?
解决方法
在我看来,当您只需要覆盖几个值时,一种简单的方法是照常加载xml配置,然后以编程方式调用
setProperty
,如下所示:
Configuration configuration = new Configuration();
configuration = configuration.configure(\"hibernate.cfg.xml\");
configuration.setProperty(\"hibernate.hbm2ddl.auto\",\"create-drop\");
hbm.xml文件不允许像我尝试的那样用ѭ5覆盖值,这些值仅被添加而不被覆盖
,我在尝试以编程方式加载另一个配置时遇到了问题。我所使用的解决方法是拥有另一个hibernate.properties文件(而不是xml配置)。您可以在此属性文件中设置备用hibm2ddl值,并使用以下代码加载它:
Properties props = new Properties();
props.load(new FileInputStream(propFile));
configuration = new Configuration().setProperties(props);
尝试看看是否适合您。
提示:请勿调用configuration.configure()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。