1

我正在使用 Hibernate 和 PostgreSql。在休眠中,我有两个类,例如:

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 中,我不想将该值放入 M​​odel 表中,因为如果我放入,我需要更改很多代码。

现在我想要一个查询来得到输出

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

但这里我的描述也在模型表中。有人可以帮忙吗?


谢谢你的回复,正如我提到的这个移动表(Hibernate Mobile 类)没有参考模型表(在休眠模型类中)。如果我在 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 
}

我的休眠模型类就像......

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 回答