您的位置:首页 > 其它

Hibernate 映射视图的联合主键的问题

2008-11-20 13:23 344 查看
Hibernate 映射视图会生成联合主键.在查询时,如果联合主键(其实不光是联合主键,单个的主键也是,如果为空,那么返回的整条结果都为空)里有一项值为null,则整个结果返回null.

所以一定要设置不为空,并且组合主键唯一的情况下来设置.

如果不能找到这样的主键,可以有下面的解决办法.

解决办法:

可以把它当表来处理,如果没有唯一的字段,那么

要在视图中实现一个 rowid 或者rownum 的字段,主键可以用rowid 或者rownum来实现,

举例:

见下视图:

create or replace view v_cdk_info_handle_report as
select a.rowid||b.rowid||c.rowid as id,a.n_date, a.v_ex_flow_no, a.n_money,
a.v_dept_code, a.v_ex_name, a.n_type,
a.n_type_name, a.n_status ,a.v_dept_id,
a.n_rec_id,
decode (a.n_status,0,null, b.n_gz_id) as n_gz_id,
decode (a.n_status,0,null,b.n_hx_id) as n_hx_id,a.v_account_no,
a.v_gz_reason,a.v_atm_no,a.v_oper_code,
decode (a.n_status,0,null,b.n_money_gz) as n_money_left,
decode (a.n_status,0,null,b.is_deleted) as is_deleted,
decode (a.n_status,0,null,b.n_created_user) as n_created_user,
decode (a.n_status,0,null,to_char(b.d_created_date,'yyyy-mm-dd hh:mm:ss')) as d_created_date,
decode (a.n_status,0,null,to_char(c.n_date,'yyyy-mm-dd hh:mm:ss')) as hx_n_date,
decode (a.n_status,0,null,c.v_ex_flow_no)as hx_v_ex_flow_no,
decode (a.n_status,0,null,c.n_money) as n_money_hx,
decode (a.n_status,0,null,c.v_dept_code) as v_dept_code_hx
from tb_cdk_info a LEFT JOIN tb_cdk_handle b on a.n_rec_id=b.n_gz_id LEFT JOIN tb_cdk_info c on b.n_hx_id=c.n_rec_id
WHERE a.n_status=0 or (a.n_status=2 and b.is_deleted=0) or (a.n_status=1 and b.is_deleted=0)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: