2

我有一个相当大的应用程序,有数百个表。

出于组织目的,我想将表分成几组(比如 5 个左右),并将它们放在数据库中的不同模式中。我只想使用一个数据库,所以我仍然可以跨模式将表连接在一起,所以只有一个 SessionFactory。

但是,我不确定如果我们在所有模式之间发生名称冲突会发生什么。我可以很容易地在休眠对象的代码中包含不同的包,这不是问题。但是当谈到 HQL 时,如果我在不同的包中有两个都称为“客户”的实体,是否可以区分 HQL 查询中的实体?也许带有某种前缀?

任何建议或您在尝试执行此操作时看到的任何其他陷阱。

4

1 回答 1

1

我从未尝试过,但它应该基本上可以工作。

Hibernate 不允许多次映射相同的类名(请参阅此问题),除非您使用实体名称。(非常准确地说:Hibernate 不允许多次使用相同的实体名称。当未指定其他内容时,类将其类名称作为实体名称)。

文档中没有太多关于它的内容。请参阅第 5.3 章,多次映射一个类

实体名称可用于:

  • 查询
  • 保存实体时(在您的情况下,不需要指定实体名称,因为它不是多次映射的同一个类。但您需要尝试)。
  • 映射引用时(此处相同:在您的情况下不需要)

祝你好运 ;-)

于 2012-08-30T08:47:00.870 回答