【发布时间】:2013-12-26 14:21:18
【问题描述】:
当我尝试在primary key 包含多个字段的某个视图对象中搜索时,我收到此错误:Too many objects match the primary key oracle.jbo.Key。
用例:
在Jdeveloper 11.1.2.3 我有Entity object 称为someTable 这个表有三个字段A,B and C 其中primary key 由两个字段A and B 组成。
我从someTable 创建了两个不同的View object 实体对象someTableVO1 和someTableVO2。在视图对象somtableVO1 中归档A 是List Of Value(LOV),数据来自A 在someTableVO2 中归档。
在应用程序中,我有一个搜索页面,其中包含在somTableVO1 中提交的A 的下拉列表。根据某些条件,下拉列表值不是静态的。下拉列表的值可以根据在someTableVO1 上执行的select 查询进行更改,它基于C 的已提交字段C,这是primary key 的NOT 部分。
该页面显示具有正确值的下拉列表。但是,我有一个ValeChangeListener 方法,当用户从下拉列表中选择某个值时,它就会被激活。
问题是:
当我执行此方法时,会发生错误Too many objects match the primary key。
假设:
我认为问题在于主键的多个字段。诅咒在primary key 的一部分(即在一个归档A 或B)中存在重复,但A 和B 的组合始终是唯一的。
注意事项:
1.我通过在SQL Developer 中运行查询来检查它,它没有显示任何重复值。
2.我没有附上代码,因为我认为问题不在于(如何做)而在于(做什么)。
希望思路清晰
【问题讨论】:
-
您的主键不是唯一的。做到这一点。
-
拖曳字段的组合始终是唯一的,正如问题中提到的那样。你能澄清一下吗...
-
看来 Oracle 不同意你的观点。
-
好的,我找到了问题的根本原因,但我还不能解决它。它与主键的多个字段无关。相反,它是关于递归值列表 (LOV)。在我的例子中,属性 A 是一个值列表,它的值来自视图对象,形成相同的实体对象,具有相同的数据和相同的主键
标签: java oracle view jdeveloper composite-primary-key