1

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

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

谢谢

4

1 回答 1

1

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

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

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

于 2012-04-26T13:36:11.117 回答