Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何使用Hibernate将我的唯一键与有效的空内部值相匹配?_Oracle_Hibernate_Database Design_Orm_Jpa 2.0 - Fatal编程技术网

Oracle 如何使用Hibernate将我的唯一键与有效的空内部值相匹配?

Oracle 如何使用Hibernate将我的唯一键与有效的空内部值相匹配?,oracle,hibernate,database-design,orm,jpa-2.0,Oracle,Hibernate,Database Design,Orm,Jpa 2.0,我有一个表(不是由我创建的,也不能由我修改),其中包含约30列,其中包含序列中的代理主键。在这30列中,只有3列不可为空(我们称它们为col1、col2和col3),使用这3列和其他6列可为空(col4…col9),我有一个唯一的索引。我如何用Hibernate映射它?考虑到我不允许更改任何数据库属性,建议的最佳解决方案是什么 考虑一下,我想要实现一个CRUDRESTAPI,该api应该检查该实体是否已经存在以更新数据,否则,将其插入同一方法中。将(1,2,3)值(col1,col2,col3)

我有一个表(不是由我创建的,也不能由我修改),其中包含约30列,其中包含序列中的代理主键。在这30列中,只有3列不可为空(我们称它们为col1、col2和col3),使用这3列和其他6列可为空(col4…col9),我有一个唯一的索引。我如何用Hibernate映射它?考虑到我不允许更改任何数据库属性,建议的最佳解决方案是什么

考虑一下,我想要实现一个CRUDRESTAPI,该api应该检查该实体是否已经存在以更新数据,否则,将其插入同一方法中。将
(1,2,3)值(col1,col2,col3)
传递到我的查询应该会导致一个空表的成功插入。在此之后,如果我尝试插入
(1,2,3,4)值(col1,col2,col3,col4)
,并且第四个值来自上一个唯一索引索引索引的列,则它应该插入另一行,结果是:

seqPK col1(notNull) col2(notNull) col3(notNull) col4(null)   col25(null) ...
1     1             2             3             null         null        ...
2     1             2             3             4            null        ...
因为(1,2,3,null(x6))不同于(1,2,3,4,null(x5))。但是如果我尝试插入
(1,2,3,25)值(col1,col2,col3,col25)
,并且第四个值来自非索引列,它应该像这样更新插入的第一行:

seqPK col1 col2 col3 col4(null) col25(null) ...
1     1    2    3    null       25          ...
2     1    2    3    4          null        ...

我计划在我的findById中使用
@Query
(传递所有9个参数),并始终强制它们不为null(
@NotNull
),从而在不使用hibernate提供的任何
@Id
功能的情况下强制它们的属性具有唯一性。有更好的方法吗?

您好。这还不清楚。“映射到这个”是什么意思——映射到什么?为什么不使用PK作为id呢?告诉我们你可以做这些插入有什么意义?“最小”是什么意思?什么是未简化的版本?您是否理解在SQL中,当列是“唯一”且允许为null时,这意味着有两个这样的具有任何null的子视图被认为是不同的&即使它们在处理null=null时是相同的,也可以在一个表中?您确实想要多个这样的行吗?这样一个包含null的子代码不标识表的特定行。你不能让FK和他们联系。“映射此对象”意味着从表2中正确创建Java实体。我不能使用PK作为id,因为它是序列中的代理键,它不会添加任何关于行如何可以唯一的信息,只有在检查了行的唯一性之后才能保证它。3.重点是展示一个示例,说明我的hibernate实体在插入数据库4之前应该接受什么。最小意味着不填充其他所有列。未简化的版本将填充所有第5列。关于你的最后一点,我同意你的观点,这个数据库设计有多么糟糕。不幸的是,我不允许更改它。“映射此”来自对象关系映射,正如作为标记指出的那样。我知道映射的含义,我的意思是,您不清楚您正在尝试做什么。感谢您的耐心。如果你对我想要什么有任何疑问,尽管问