- PR -

HibernateをViewに対して使用すると、オブジェクトにNULLが返却される。

1
投稿者投稿内容
まさとー
会議室デビュー日: 2006/03/16
投稿数: 3
投稿日時: 2006-03-16 16:09
始めましてまさとーです。

現在、Hibernateを利用しシステム開発を行っているですが。
Viewに対してHibernateを使用すると検索は行われているにも
関わらず下記ソースのVpdオブジェクトにNULLが返却されます。

だれか、同じ現象が発生し原因が分かる方はおりませんでしょうか?

環境
HibernateはVer.3
JDK1.4.2_03
Oracle9i

public static void main(String args[]) throws Exception{
Configuration config = new Configuration().configure();
SessionFactory sessionfactory = config.buildSessionFactory();
Session session = sessionfactory.openSession();


List list = session.createCriteria(VPtDetail.class).list();
for(int i = 0; i < list.size(); i++){
VPtDetail Vpd = (VPtDetail)list.get(i);
System.out.println("V:" + Vtrr.getTotalAmot());

}
}

以上
よろしくお願い致します。

[ メッセージ編集済み 編集者: まさとー 編集日時 2006-03-16 16:13 ]
でるびすた
常連さん
会議室デビュー日: 2005/06/15
投稿数: 22
投稿日時: 2006-03-17 12:52
詳しく調べた訳ではないのであくまで推測に過ぎませんが、
Hibernateは対応する行がDB上にない場合は
オブジェクトにnullがセットされるみたいです。
例えばこんなView(ORACLE)の場合です。

CREATE OR REPLACE VIEW EXAMPLE_VIEW
(AVERAGE_PRICE,TOTAL_PRICE) AS
SELECT AVG(PRICE), SUM(PRICE) FROM SOMETABLE;

間違ってたらごめんなさい。
よろしくどうぞ。

[ メッセージ編集済み 編集者: NIQS 編集日時 2006-03-17 13:01 ]
まさとー
会議室デビュー日: 2006/03/16
投稿数: 3
投稿日時: 2006-03-28 16:41
NIQSさん

ご回答ありがとうございます。

調査した結果、VIEWだと全てがPキー扱いされている事が原因のようです。
多分、1項目でもnullの場合にオブジェクト自体nullにしてしまう模様。
→VIEWにNVLをつけて半角スペースを設定したら検索できました。
でるびすた
常連さん
会議室デビュー日: 2005/06/15
投稿数: 22
投稿日時: 2006-03-29 09:33
ということはやはり間違ったことを言ってたみたいですね。
知ったかぶって大変失礼しました。
逆に大変参考になりました。早速私も試してみます。
1

スキルアップ/キャリアアップ(JOB@IT)