当前位置: 首页 > 知识库问答 >
问题:

JPA /空值Hibernate复合主键

锺离正祥
2023-03-14

我有一个复合主键,其中一个键为空。实体中必须存在哪些注释,以便我可以使用此类JPA获取数据:

ID_FIRST_KEY    |ID_SECOND_KEY  |DATA
-------------------------------------
1               |100            |data1
1               |200            |data2
1               |null           |data3
2               |100            |data4
......................................

我尝试使用IdClass Annotation和EmbeddedId Annotation,但出现异常

   Exception Description: The primary key read from the row [ArrayRecord(
        DATA.ID_FIRST_KEY => 1
        DATA.ID_SECOND_KEY => null
        DATA.DATA => data3)] during the execution of the query was detected to be null.  Primary keys must not contain null.

例如,使用了数据,但在实际项目中使用了类似的数据,因此无法用值替换null。

共有1个答案

郎德馨
2023-03-14

你不能使任何主键空,如果你的值是空的那么它不应该是主键的一部分。相反,您可以为主键添加一个新列

有关更多详细信息:多列主键中的NULL值

 类似资料:
  • 我在oracle数据库中有一个包含客户数据的表。以下是一个简化的定义: 此表的主键是。 该表有许多行,其中为空。在数据库级别,没有问题,但是当我试图通过JPA实体访问这些行时,会导致一些问题: 1:使用

  • 问题内容: 我的JPA模型中有以下类(省略了getters,setters和无关字段): 我需要定义一个类,使得当从所述类生成DDL时,相应的表的主键被由密钥和。我尝试了以下方法: 但这会为表生成以下内容: 请注意,和都是可为空的,当我尝试将DDL加载到SQL Server时会导致以下错误 无法在表“ PRICE”中的可为空的列上定义PRIMARY KEY约束 我不明白为什么这些可以为空,因为在域

  • 我在使用复合主键的hibernate实体集时遇到了问题。 我们的应用程序中有一个概念“Target”。目标id应该是其他三个表(实体)主id的组合。目标也有一个int标记。员工应该有一系列目标。SQL如下所示: 这个SQL工作正常,它允许我每个role_id(员工)多个目标,只要应用程序和项目分类不同。 这是目标ID类 这是目标类 这是employee类,我想在其中为每个员工存储一组目标。 通过h

  • 当我执行这个查询时,我会得到以下异常

  • 我为这个特殊的问题找了很多,但我没有找到任何具体的解决办法。我在一个表中有一个复合主键,这个复合主键的一个字段是另一个表的复合主键的一部分。您可以说这个特定的字段是第二个表中的外键,但是在表定义中没有定义任何独占外键约束。对于第一个表中的每个rec,第二个表中可能有多条记录。我试图使用SPringBoot-JPA-Hibernate实现这一点,但无法实现。有人能帮我吗。以下是德泰:- 我有一个US

  • 我很难在Hibernate中映射复合主键连接。下面是我的模式的简化图片。请注意,我不能更改架构。 简化模式 引用com.corp.activity.tree的referencedColumnNames(id)未映射到单个属性 如何在Hibernate中构建这样的关系?我必须映射到单个属性(id),尽管主键是复合的。