- - PR -
Hibernateの外部結合でObjectNotFoundException
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-06-13 19:43
掲題の通りなんですが、外部結合を行ったデータの読み取りで例外が発生して困っております。
思いつきでも構いませんので何かヒントを頂ければ大変助かります。 以下、主な設定ですが主要部分を抜き出しています。個人的ににはSQLのトレースで、2つ目 のSQLが手がかりになると考えています(出ないのが正しい?) ■主となるテーブル <hibernate-mapping package="pojo"> <class name="Project" table="project" lazy="false"> <meta attribute="sync-DAO">false</meta> <id name="Id" type="string" column="project_id"> <generator class="sequence"/> </id> <many-to-one name ="Customer" column="customer_code" class="Customer" insert="false" update="false"/> </class> </hibernate-mapping> ■従となるテーブル <hibernate-mapping package="pojo"> <class name="Customer" table="customer" lazy="false"> <meta attribute="sync-DAO">false</meta> <id name="Id" type="string" column="customer_code"> <generator class="assigned"/> </id> <property name="CustomerName" column="customer_name" type="string" not-null="false"/> </class> </hibernate-mapping> ■実行したHQL文 from Project project left outer join fetch project.Customer customer order by project.Id ■hibernate経由で発行されたSQL文 SELECT project0_.project_id as project1_6_0_, customer1_.customer_code as customer1_0_1_, customer1_.customer_name as customer2_0_1_, FROM project project0_ left outer join customer customer1_ on project0_.customer_code=customer1_.customer_code ORDER BY project0_.project_id SELECT customer0_.customer_code as customer1_0_0_, customer0_.customer_name as customer2_0_0_ FROM customer customer0_ WHERE customer0_.customer_code=? ■主な環境 JDK :1.5.0_06 Hibernate :3.1.3 DB :PostgreSQL7.4 | ||||
|
投稿日時: 2006-06-15 16:22
自己レスです。どうやら主テーブルと従テーブル側でキーが不整合なデータをフェッチした際に
例外が発生していた模様です。データの整合性を整備したところ例外は出なくなりましたが、 コレって、外部結合になっていない気がするんですがこんなもんなんでしょうか。。。 [ メッセージ編集済み 編集者: TAKEZO 編集日時 2006-06-16 10:41 ] | ||||
|
投稿日時: 2006-06-15 18:04
あたってるかわかりませんが、、
「hibernate.max_fetch_depth」をHibernate.cfg.xmlで 指定されていますか? デフォルトが何になるかわからないのですが、 「hibernate.max_fetch_depth」の値が0だと、 外部結合にならないと思います。 | ||||
|
投稿日時: 2006-06-16 11:03
はちぃさん、助言頂きありがとうございます。早速、試してみましたがうまく動作しませんでした。
2つのテーブルから外部結合でデータをフェッチして、オブジェクトにマッピングする際に 主オブジェクトに含まれる従オブジェクトがnullで初期化できればいいだけなんですが、 発想が根本的に間違っているんですかね。。。。Lazy辺りも怪しいかなと疑ったりしています。 | ||||
|
投稿日時: 2006-06-19 11:34
たしかに、Lazy当たりが怪しそうですねぇ。 ↓こちらが参考になるかもしれません。 http://d.hatena.ne.jp/da-yoshi/20060201 |
1