我有两个数据库(Oracle和SqlServer),两者都有相同的表(省)。我正在将JPA与Hibernate一起使用,并且需要对任何这些数据库执行操作。
我为每个表都有一个hbm映射文件,但它们都引用了同一个类(Province.java)。 我已经配置了hibernate.Oracle.cfg.xml和hibernate.SqlServer.cfg.xml,以便为每个数据库适当地声明映射。
我也在使用Spring。
这是我的问题。当应用程序加载(实际上是JUnit)时,它会尝试加载两个hbm文件,抛出DuplicateMappingException,因为Province.java是两次。此外,如果我只保留一个hbm文件和一个hibernate配置文件,它仍然会抛出DuplicateMappingException;但是,如果我从hibernate配置文件中删除映射,那么它可以工作(但我不想这样)。这意味着hbm文件会自动加载,然后再次加载,因为它在配置文件中声明。
有没有办法可以避免自动加载hbm文件?
答案 0 :(得分:0)
我终于找到了解决这个问题的方法。
我将< exclude-unlisted-classes> false< / exclude-unlisted-classes> 添加到两个持久性单元中persistence.xml文件,它阻止自动加载hbm文件。我还必须将映射放在hibernate.Oracle.cfg.xml和hibernate.SqlServer.cfg.xml中。