0

我有两个数据库(Oracle 和 SqlServer),并且两者都有相同的表(Province)。我正在将 JPA 与 Hibernate 一起使用,并且需要对这些数据库中的任何一个执行操作。

我为每个表都有一个 hbm 映射文件,但它们都引用同一个类(Province.java)。我已经配置了 hibernate.Oracle.cfg.xml 和 hibernate.SqlServer.cfg.xml 以便为每个 DB 适当地声明映射。

我也在使用Spring。

这是我的问题。当应用程序加载(实际上是 JUnit)时,它会尝试加载两个抛出 DuplicateMappingException 的 hbm 文件,因为 Province.java 是两次。此外,如果我只保留一个 hbm 文件和一个休眠配置文件,它仍然会抛出 DuplicateMappingException;但是如果我从休眠配置文件中删除映射,那么它就可以工作(但我不想要这个)。这意味着 hbm 文件会自动加载,然后由于在配置文件中声明而再次加载。

有没有办法可以避免自动加载 hbm 文件?

4

1 回答 1

0

我终于能够找到解决这个问题的方法。
我将<exclude-unlisted-classes>false</exclude-unlisted-classes>添加到 persistence.xml 文件中的两个持久性单元中,它阻止了自动加载 hbm 文件。我还必须将映射放在 hibernate.Oracle.cfg.xml 和 hibernate.SqlServer.cfg.xml 中。

于 2012-12-11T11:23:33.747 回答