1

Hibernate と PostgreSql を使用しています。休止状態では、次のような 2 つのクラスがあります。

Mobile(id, name, serial no,model_no)
Model(id, description, value)

Model クラスの値が Mobile クラス (model_no) に格納されるようになりました。この Mobile クラスには Model クラスへの参照がありません。

Model クラスには次のようなデータがあります。

Modal
======
id description value
1  aaaa        1
2  bbbbb       2
3  ccccc       3
4  ddddd       12
5  eeee        40

ここで、この値は Mobile テーブルに格納されています。Mobile テーブルでは、model_no が 0 になっています (これは Model にはありません。その値を Model テーブルに入れたくありません。入れた場合、多くのコードを変更する必要があるためです。

今、クエリで出力を取得したいのは

value description
----   ------------
0     UNKNOWN
1     aaaa
2     bbbbb
3     ccccc
4     ddddd
5     eeee.

このような。すべてを取得するには、model_nos次のようなクエリを使用できます

select modal_no from Mobile 
where modal_no in(select value from Modal) or model_no = 0

しかし、ここではモデルテーブルにある説明も何ですか。誰でも助けることができますか?


このMobileテーブル(Hibernate Mobileクラス)にはModelテーブル(hibernate Modelクラス)への参照がないことを述べたので、返信ありがとうございます。Mobile クラスの Model への参照がある場合、あなたの答えは 100% 正しいでしょう。私の Mobile クラスでは、この model_no は整数値です。hql でクエリを使用すると、「期待されるパス」のような例外が発生します。Hql(またはsql)クエリで値0の出力を取得したい。私の休止状態のモバイルクラスはこのようなものです

 class Mobile { 
   int id;   
   int model_no; // this model_no has 0 + modal_no values(1,2,3,12,42). 
   // some references like 
   Manufacture manf; 
   SerialNo serialno;
   Customer cust; 

  getters and setters 
}

私のHibernate Modelクラスは...

class Model{
   int id;
   String description;
   int value; this column has 1,2,3,12,42. it don't have 0.

   setters and getters.
}
4

1 に答える 1

2

Aleft joinはそれを達成します。

select  Mobile.modal_no 
,       Modal.description
from    Mobile 
left join    
        Modal
on      Mobile.model_no = Modal.value
于 2012-08-19T05:26:00.883 に答える