+ -
当前位置:首页 → 问答吧 → Hibernate查询视图的郁闷

Hibernate查询视图的郁闷

时间:2011-12-16

来源:互联网

我建了一个视图,在hibernate对其进行映射的时候使用了复合主键。
该复合主键中包含三个字段,但是在有些记录中,这三个字段中的某个字段是null,所以当hibernate查询的时候,对应该行的整个实体就被置为null了。

看网上有的方法是把复合主键中有可能为null的字段,放到复合主键外面来,但是我这是个视图,只有使用这三个字段才能唯一确定一条记录。

在创建视图的时候使用了group by ,在视图中也不会显示原来表的主键。

我该怎么办,求高手指点。

作者: sl_nevergiveup   发布时间: 2011-12-16

有 null 值也能当主键?

作者: qianjin036a   发布时间: 2011-12-16

引用 1 楼 qianjin036a 的回复:

有 null 值也能当主键?


但是如果不把可能为null的这个字段包含进来,其它的两个字段是不能唯一确定一条记录的。
比如:

年份 院系 姓名 获奖数量
------------------------------------
2010 CS Lucy 4
2010 CS 5

我想知道某年某院系的某位老师的奖励数,由于遗留数据的问题,就是有某些记录,老师姓名这个字段有的为Null,但是也要查出来。这样如果不把姓名这个字段包含尽力,怎样区分上面的两条记录呢。

作者: sl_nevergiveup   发布时间: 2011-12-16

不过我现在有办法了,在创建视图的时候,再创建一列ID为:年份||院系||姓名

作者: sl_nevergiveup   发布时间: 2011-12-16

引用 3 楼 sl_nevergiveup 的回复:
不过我现在有办法了,在创建视图的时候,再创建一列ID为:年份||院系||姓名


这样有空值还是不能为主键啊

作者: fredrickhu   发布时间: 2011-12-16

引用 4 楼 fredrickhu 的回复:

引用 3 楼 sl_nevergiveup 的回复:
不过我现在有办法了,在创建视图的时候,再创建一列ID为:年份||院系||姓名


这样有空值还是不能为主键啊

虽然有某个字段有时候为null,但是只要保证这三个字段至少有一个不为null就可以呀,刚才试了下,完全可以。
当然,如果哪天这群SB真弄出这样一条数据出来,那就怪不得俺了……

作者: sl_nevergiveup   发布时间: 2011-12-16