Hibernate:在Oracle和TimesTen中使用相同映射文件的选项

时间:2012-04-26 12:58:17

标签: hibernate

我们的问题是,我们的TimesTen数据库中不存在Oracle数据库中不可为空的字段。因此,我们的应用程序的GUI部分写入Oracle,然后我们的应用程序引擎从TimesTen读取。 问题是Oracle中的某些字段不可为空,因此我们在映射文件中需要它们。 但是,当我们从TimesTen中读取相应的对象时,我们会收到一条错误消息,指出该列不存在。 我们无法将这些列添加到TimesTen,因为它们不被我们的应用程序引擎使用,并且性能/内存使用是关键。 我已经尝试使这些属性在映射文件中“懒惰”,但这似乎不起作用。 我们无法在Oracle中为这些不可为空的字段指定默认值,因此这似乎很难解决!

从Hibernate的角度来看,我们还有哪些其他选择?

由于

1 个答案:

答案 0 :(得分:1)

据我所知,Hibernate总是确保映射文件中提到的所有列都存在于数据库中。所以你不能在一个映射文件中完成它。

使用两个映射文件。然后你还使用两个hibernate.cfg.xml,一个用于GUI部分,一个用于应用程序引擎。这两个配置文件的区别在于,它们在映射属性中引用了不同的映射文件。当您将这些配置文件的名称作为参数提供给GUI部分和应用程序引擎中的configure()方法时,其余的Java代码对于您的两个应用程序可以完全相同。

如果一个表的两个不同的映射文件(对于Oracle和TimesTen)应包含大量相同的xml代码,并且您不希望在文件中使用此xml代码两次,则可以使用xml机制包含文件(包括[<!ENTITY namexxx SYSTEM "filename">]&namexxx)。