Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 Can';t在@ManyToOne关系上插入空值_Java_Spring_Hibernate_Jpa_Many To One - Fatal编程技术网

Java Can';t在@ManyToOne关系上插入空值

Java Can';t在@ManyToOne关系上插入空值,java,spring,hibernate,jpa,many-to-one,Java,Spring,Hibernate,Jpa,Many To One,当我试图持久化一个类对象时,我遇到了这个错误: Detail: Key (classB)=() is not present in table "b". 我需要有可能在引用的列上插入null的对象 问题是hibernate转换空字符串上的空值,所以当我尝试持久化对象时,它失败了 如果我将cascade=CascadeType.ALL放在@ManyToOne上,它会在B table上创建一行,ID=0,空字符串为refColName值。我想避免这种情况,因为dea类是子类,而级联应该在B类中 @

当我试图持久化一个
类对象时,我遇到了这个错误:

Detail: Key (classB)=() is not present in table "b".
我需要有可能在引用的列上插入null的对象

问题是hibernate转换空字符串上的空值,所以当我尝试持久化对象时,它失败了

如果我将
cascade=CascadeType.ALL
放在
@ManyToOne
上,它会在
B table
上创建一行,ID=0,空字符串为
refColName
值。我想避免这种情况,因为dea类是子类,而级联应该在B类中

@Entity
@Table
public class A {
    ...
    @ManyToOne
    @JoinColumn(name = "class_b", referencedColumnName = "refColName", nullable = true)
    private B classB;
    ...
}

@Entity
@Table
public class B {
    ...

    @Id
    @Column (name = "id")
    private long id;

    @Column(name = "refColName")
    private String refColName;
    ...
}
有什么建议吗? 谢谢你的时间

编辑:


这是一个单向关系,其中B是一个主数据表,所以我有预定义的值。refColName应该是一个字符串。我使用referencedColumnName是因为我不能将id作为外键

我需要能够在 引用列

请确保要持久化的classA输入如下(用json表示)

而不是

{
  classB:{
    refColName:null
  }
}

引用的`列不是字符串。它必须是对象AIt的一个单向关系的集合/列表,其中B是主数据表,所以我有预定义的值。refColName应该是一个字符串。我使用referencedColumnName,因为我不能将id作为外键。尝试使用@ManyToOne选项不起作用。我仍然得到同样的错误。我尝试了一些我看到的答案,但没有任何效果。“a类是子类,级联应该在B类中”-那么为什么不使用一个单向的
@OneToMany
关联和一个连接列呢?另外,您是否有机会使用Oracle?
{
  classB:{
    refColName:null
  }
}