首页 / 知识
关于java:Hibernate映射具有空值的组合键
2023-04-15 20:19:00

Hibernate mapping a composite key with null values使用Hibernate,可以创建一个组合ID,其中要映射到该ID的列之一可以为空值吗? 这是要处理具有唯一键的旧表,该键可以具有空值,但不能具有主键。 我意识到我可以在表中添加一个新的主键列,但是我想知道是否有任何方法可以避免这样做。 不。主键不能为null。 不幸的是,没有。我要么不得不使用一种解决方法: 我在视图(!不是表格)中使用了组合ID,在该视图中行可以精确地由2个cols(A,B)标识。尽管cols(B)之一可以具有空值以及正整数。 您不会收到错误,但是Hibernate将无法将复合列的具有NULL值的行映射到您的实体。这意味着您将获得结果为NULL值的实体。 对于复合键(假设数据库允许PK中的空值),您可以具有最多number_of_cols ^ 2-1个包含空值的条目(例如,对于2列的复合键,您可以有3行主键为null的行,第四是不包含空值的PK)。 这是不可取的。您可以使用视图和地图来代替吗?如果您遗留了旧数据,则可以使用COALESCE提供默认值。我们在使用复合键时遇到很多麻烦,我想空值会导致更多问题。 您为什么要这样做?您的复合ID应该映射表的主键,并且在键中放入空值听起来不明智,对吗? 编辑:Hibernate不允许这样做;您可以将属性放置在密钥之外,并稍微调整DAO以在必要时将字段考虑在内。 |
最新内容
相关内容
linux端口映射命令?
linux端口映射命令?,工具,设备,电脑,系统,服务,网站,不了,名字,通信,环境,在linux下怎样关闭端口映射1、使用防火墙关闭端口,可以使用iptableslinux组合命令别名?
linux组合命令别名?,系统,别名,地方,环境,工作,新增,命令,终端,文件,环境变量,linux系统怎样设置命令别名1、可将设置别名的命令写进启动文件域名映射命令linux?
域名映射命令linux?,地址,网络,信息,系统,服务,命令,电脑,管理,网址,数字,如何将虚拟机中centos版本的linux的ip地址与域名相互解析?1、\x0dpython 参数组合
python 参数组合,位置,参数,培训,关键字,函数,定义,顺序,后面,形式,以上,在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参python中空值如何赋值
python中空值如何赋值,异常,概念,培训,对象,赋值,数据类型,变量,属性,特征,表示,python中,万物皆对象,所有的操作都是针对对象的。那什么是对象python组合数据类型分为哪几类?
python组合数据类型分为哪几类?,培训,数据类型,关于键盘:如何通过javascript实现CT
关于键盘:如何通过javascript实现CTRL或SHIFT + 的快捷键组合?,关于键盘:如何通过javascript实现CTRL或SHIFT + 的快捷键组合?,应用程序关于sis:如何在使用Oracle OLE DB提
关于sis:如何在使用Oracle OLE DB提供程序时解决SQL查询参数映射问题?,关于sis:如何在使用Oracle OLE DB提供程序时解决SQL查询参数映如何使用NHibernate将字符串列表映
如何使用NHibernate将字符串列表映射到我的实体?,如何使用NHibernate将字符串列表映射到我的实体?,标签,外键,数据库中,有两个,How can关于Java:hash映射与哈希表之间的区
关于Java:hash映射与哈希表之间的区别?,关于Java:hash映射与哈希表之间的区别?,线程,应用程序,更有效,区别,Differences between HashMap关于sql server:GUID作为主键-脱机O
关于sql server:GUID作为主键-脱机OLTP,关于sql server:GUID作为主键-脱机OLTP,用户,应用程序,系统,下载,GUIDs as Primary Keys - Off关于函数式编程:C#中的通用映射/减少
关于函数式编程:C#中的通用映射/减少列表扩展,关于函数式编程:C#中的通用映射/减少列表扩展,扩展程序,在编,模仿,我正,Generic Map/Reduc