2012-07-20 52 views
0

我有两个独立的数据库模式(或2用户的Oracle的行话表) - schemaA和schemaB。休眠:2点的数据源以初始化单个对象

schemaA,其它表中,具有表:

domain(id NUMBER PK, description(VARCHAR2(10))

schemaB具有表:

q_user(id NUMBER PK, username VARCHAR2(8) NOT NULL, domain_id NUMBER, CONSTRAINT foreign key references schemaA.domain(id))

Java类QUSER具有以下属性: Long id, String username, Domain domain

的问题:是否可以配置? Hibernate使用两个不同的数据源(schemaA和schemaB)初始化QUser对象?如果是这样,我该怎么做?

当然我也会使用Spring 3,休眠3.6和Oracle 10g。

我在Spring技术来定义多个数据源和动态交换他们,但我不知道这可以用来初始化一个对象。

任何帮助表示赞赏。 感谢

回答

1

在您的域名映射,还可以输入模式名称。

随着XML:

<class name="Domain" table="domain" catalog="schemaA"> 

使用注释:

@Table(name = "domain", schema = "schemaA") 

然后,你并不需要多个数据源。你建立连接使用schemaB用户数据源(因为你有权限访问schemaAschemaB表 - 因此外键)。

+0

谢谢!这看起来不错,但为了保持问题的清洁,我将Domain to User的关系保持为1:1,但在现实生活中,我拥有多对多的关系。所以,我在中间的user_domain(user_id NUMBER,domain_id NUMBER)中有这个交集表。当我尝试添加模式(或目录)到域模型类时,我得到了 - 没有这样的表或视图错误。当我查看生成的sql时,它不会将架构应用于“... from ...域中的域”(应该是schemaA.Domain)。我想这种多对多的关系是一个不同的情况 - 你能指出我在正确的方向吗?很多谢谢 – 2012-07-20 09:54:56

+0

@damo_inc您是使用XML还是注释?我重新检查并且在XML中也有一个模式属性。 – 2012-07-20 10:46:23

+0

我正在使用注释。我设法通过在其他模式的表上创建同义词来解决它。幸运的是,我有完整的系统访问两个模式:)。非常感谢您的帮助。 – 2012-07-20 12:57:09