2009-05-06 10 views
1

私はかなり簡単な問題を解決しようとしています。私は2つの全く異なるデータベースへの接続を確立したい(しかしどちらもmysql)。今私は、複数の設定ファイルを作成し、複数のセッションを作成することでこれを解決しようとしました。私は関係に達するまですべてが働きます。 - ニュースNHibernateと複数のデータベース

DB2 - News_Authors

私はDB1の設定とDB2の設定にNews_Authorsにニュースを追加しました

DB1 :

は、私が2つのデータベース内の2つのテーブルを持っています。私は、単純な1対1の関係のエラーを構築しようとした際、私が受け取る:

An association from the table songs refers to an unmapped class: db1.News_Authors 

News.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="project.News, project" table="news" lazy="false"> 
    <id name="id" column="id" type="integer" length="11"> 
     <generator class="native" /> 
    </id> 
    <property name="title" type="String" length="255" /> 
    <property name="authorid" type="integer" length="5" /> 

    <one-to-one name="NewsAuthor" cascade="all-delete-orphan" lazy="proxy" column="authorid" unique="true" /> 
    </class>  
</hibernate-mapping> 

News_Authors.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="project.News_Authors, project" table="news_authors" lazy="false"> 
    <id name="id" column="id" type="integer" length="11"> 
     <generator class="native" /> 
    </id> 
    <property name="name" type="String" length="255" /> 
    </class>  
</hibernate-mapping> 

設定 マッピングを有効にするためにこれを追加しました。私は...すべての作品1つの設定ファイルに

<mapping resource="project.News.hbm.xml" assembly="project" /> 

を両方を設定した場合は今、どのように私は、セッションの作成時にも、私は複数のセッションを持ってNHibernateのを「通知」だろうか?あるいは、私はまったく別のアプローチを選ぶべきですか?

+1

私が答えでは見逃さだニュアンスがあると思います。テーブルが2つの異なるデータベースにあり、データベース間でデータを結合したいと言っていますか? –

+0

私はそれがまさに尋問者が求めているものだと信じています。おそらく、これはNHibernate Shardsの仕事ですか? Shardsがこの種のシナリオをサポートしているかどうかは以前は一度も知りませんでした。 –

答えて

4

もう1つの可能な解決策は、SQL Serverデータベースの1つにビューを作成して、他方のテーブルを参照することです。 DB1データベースにdb2.News_Authors

から選択

*

:ビューのようなものを返すビューを行うには、単にテーブルとその簡単なようにマップします。

このように、2つのデータベースのいずれかにマップする単一の.hbm.xmlファイルが必要になります。このことができます

希望、

-Max

0

あなたの後は、複数のセッションではなく、複数のセッションファクトリです。詳細はthisを参照してください。

ここで重要な点は、設定ファイルを使用してセッションファクトリを初期化する必要がないことです。これはプログラム的に行うことができます。そして、2つのセッションファクトリを持つだけのステップです。

関連する問題