Hibernate映射具有空值的组合键
时间:2020-03-05 18:55:33 来源:igfitidea点击:
使用Hibernate,可以创建一个组合ID,其中要映射到该ID的列之一可以为空值吗?
这是为了处理具有唯一键的旧表,该键可以具有空值,但不能具有主键。
我意识到我可以只向表中添加一个新的主键列,但是我想知道是否有任何方法可以避免这样做。
解决方案
回答
你为什么想这么做?复合ID应该映射表的主键,并且在键中放置空值听起来不明智,是吗?
编辑:Hibernate不允许这样做;我们可以将属性放置在密钥之外,并稍微调整DAO以在必要时将字段考虑在内
回答
否。主键不能为null。
回答
这是不可取的。我们可以使用视图和地图来代替吗?如果我们遗留了旧数据,则可以使用COALESCE提供默认值。我们在使用复合键时遇到了很多麻烦,我想空值会引起更多的问题。
回答
对于复合键(假设数据库允许PK中的空值),我们可以具有最多number_of_cols ^ 2 1个包含空值的条目(例如,对于2列的复合键,我们可以有3行主键为null,第四行是PK没有空值)。