2012-04-26 46 views
0

我们的问题是,我们的Oracle数据库中不可空字段不存在于我们的TimesTen数据库中。因此,我们的应用程序的GUI部分写入Oracle,然后我们的应用程序引擎从TimesTen读取。 问题是有些字段在Oracle中是不可空的,因此我们需要它们在我们的映射文件中。 但是,当我们从TimesTen中读取相应的对象时,我们得到一个错误,指出该列不存在。 我们无法将这些列添加到TimesTen中,因为它们未被我们的应用程序引擎使用,并且性能/内存使用率很关键。 我试图使这些属性在映射文件中是“懒惰”,但这似乎并没有工作。 我们不能在Oracle中为这些非空字段指定默认值,所以这似乎很难解决!休眠:在Oracle和TimesTen中使用相同映射文件的选项

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

感谢

回答

1

据我所知休眠始终确保在数据库中存在这是在映射文件中提到的所有列了。所以你不能在一个映射文件中完成它。

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

如果一个表中的两个不同的映射文件(用于Oracle TimesTen的&)应该包含很多相同的XML代码,你不想在你的档案中两次有这样的XML代码,那么你可以使用XML机制包括文件(使用[<!ENTITY namexxx SYSTEM "filename">]&namexxx)。

+0

还没有试过这个,但是会在重新解决这个问题时发布。这可能是我们现在唯一的解决方案。谢谢 – DJ180 2012-04-30 15:57:01