关于Hibernate使用组合主键时,组合主键中有些字段为null时的解决方法
来源:互联网 发布:python 自动框架 编辑:程序博客网 时间:2024/04/29 22:09
当使用视图进行查询的时候,经常会使用组合主键的方式。
这样上面的视图就会变为ID年份院系姓名获奖数量2010计算机学院张三2010计算机学院张三262010计算机学院2010计算机学院null27
这样当在hibernate中映射的时候就可以只映射一个字段ID作为主键,主键的生成方式为assigned,这样避免使用组合主键了,从而就没有了组合主键所带来的问题。
在hibernate中,配置在组合主键中的字段,若只要有一个的值为null那么,hibernate会将整行对应的实体置为null。
有时候,这并不是我们想要的。
网上比较多的解决方法就是:把可能为null的字段放到组合主键以外。
但是这样的话,组合主键里的字段就有可能不能唯一地标记一条记录,这样查询出来的结果往往也不是我们想要。
例如:原本有下面一个视图
年份院系姓名获奖数量2010计算机学院张三262010计算机学院null27我想查询某年某学院某位老师的获奖数量,这时候使用联合主键,包含年份,院系,姓名三个字段。
如果不采取任何手段,那么使用hibernate返回的结果列表第二条记录对应的实体为null,但是如果只使用年份跟院系作为联合主键,那么就不能区分这两条记录了。
我们可以这样做:
在创建视图的时候设置一列为ID,让ID的值为组合主键中的值的连接。
create or replace view myview asselect v1.年份||v1.院系||v1.姓名 as id...................................
这样上面的视图就会变为ID年份院系姓名获奖数量2010计算机学院张三2010计算机学院张三262010计算机学院2010计算机学院null27
这样当在hibernate中映射的时候就可以只映射一个字段ID作为主键,主键的生成方式为assigned,这样避免使用组合主键了,从而就没有了组合主键所带来的问题。
当然这种方法需要保证这三个字段至少有一个不为null。
- 关于Hibernate使用组合主键时,组合主键中有些字段为null时的解决方法
- Hibernate 组合主键映射
- hibernate中的组合主键的配置
- Hibernate中使用未映射为主键的“id”字段进行查询的场景分析
- Hibernate中如何处理一对多关系中的组合主键
- Hibernate中如何处理一对多关系中的组合主键
- 【Hibernate】一对多,多对一 的组合主键,组合外键的配置文件的写法
- Hibernate组合条件List映射时Index为Null的解决.
- 添加组合主键
- 组合主键映射
- Hibernate4-组合主键映射
- 组合主键映射
- GridView绑定的表的主键是组合主键
- hibernate中联合主键的使用
- 定义组合主键的几种语法
- Hibernate联合主键 以及根据联合主键中字段查询
- 在 Hibernate 中使用 oracle 的 sequence 产生主键实现 SQL Server 自增长字段功能
- 主键id为null
- 泛型T的类型获取
- 线程同步
- eVC4++安装问题
- sql server 执行计划
- H264基本概念--图像、帧、片、NALU
- 关于Hibernate使用组合主键时,组合主键中有些字段为null时的解决方法
- 我公司承办“2012年中外大使夫人迎春联欢会”
- Could not bind factory to JNDI
- js中获取事件对象的方法小结
- 什么事情该做,什么事情不该做
- 使用HTML 5/CSS3五步快速制作便签贴特效
- 指定的命名连接在配置中找不到、非计划用于 EntityClient 提供程序或者无效
- 天津市部分机关负责人出席“中外大使夫人迎新春联谊会”
- 虚拟化之ESXI配置备份