Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
Java 一对一jpa映射DataIntegrityViolationException_Java_Database_Hibernate_Jpa_Spring Data - Fatal编程技术网

Java 一对一jpa映射DataIntegrityViolationException

Java 一对一jpa映射DataIntegrityViolationException,java,database,hibernate,jpa,spring-data,Java,Database,Hibernate,Jpa,Spring Data,我有两张桌子,一人一电话,他们是一对一的关系 **Person** person_id name **Phone** phone_id person_id -- foreign key and not null constraint number 这是我如何映射它的: Person{ @Column(name="person_id") Long personId; @OneToOne(mappedBy = "person", cascade

我有两张桌子,一人一电话,他们是一对一的关系

**Person**
person_id
name

**Phone**
phone_id
person_id -- foreign key and not null constraint
number
这是我如何映射它的:

Person{
        @Column(name="person_id")
        Long personId;

        @OneToOne(mappedBy = "person", cascade = CascadeType.ALL, 
                    fetch = FetchType.EAGER, optional = false)
          private Phone phone;

      public void setPhone(Phone phone) {
        this.phone = phone;
        phone.setPerson(this);
    }
}

Phone{
        @OneToOne(fetch=FetchType.LAZY)
        @JoinColumn(name="person_id")
        private Person person;
}
我使用的是spring数据。所以,当我尝试保存这样的人时,它会给我DataIntegrityViolationException-HsqlException:integrity constraint违例:NOT NULL check约束表:PHONE column:Person\u id


当我从表中删除NOTNULL约束并执行相同的insert时,它将成功通过

您从未从实体中为person_id提供值。我猜您是想在Phone的person字段中使用person\u id,但输入的Phone\u id错误

在这种情况下,空约束错误是合适的


已编辑:或者,Person上的ID字段缺少@ID和@GeneratedValue注释,这也可能解释空约束冲突。

您的字段名为Person\u ID还是phone\u ID?您的错误和提供的代码不匹配,因此可能存在其他字段,或者您提供的代码错误。不想复制粘贴代码,因此键入错误。在上面更新了它,并添加到我给出的答案中。有人帮你修好了吗?谢谢,我打错了。我不想复制粘贴真正的代码,所以我必须键入它。更新了它。问题仍然存在。再确认一次:Person::personId是否注释了@GeneratedValue@Id?它不包括在内,并且可能会导致出现如图所示的问题,因为personId的值从未初始化,因此为null,并且违反了如上所示的约束。
Person person = new Person();
Phone phone = new Phone();
//populate phone and person properties.
person.setPhone(phone);
repository.save(person);
repository.flush();