Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 Spring数据JPA一对多关系不保存子表_Java_Sql Server_Spring_Hibernate_Jpa - Fatal编程技术网

Java Spring数据JPA一对多关系不保存子表

Java Spring数据JPA一对多关系不保存子表,java,sql-server,spring,hibernate,jpa,Java,Sql Server,Spring,Hibernate,Jpa,母实体 @OneToMany(fetch = FetchType.EAGER, mappedBy = "paramRef", cascade=CascadeType.ALL) public Set getParamList() { return this.paramList; } 子实体 @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "param_Ref_Id", nullable = false, insertable=fals

母实体

@OneToMany(fetch = FetchType.EAGER, mappedBy = "paramRef", cascade=CascadeType.ALL)
public Set getParamList() { return this.paramList; }
子实体

@ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "param_Ref_Id", nullable = false, insertable=false, updatable=false)
public ParamRef1 getParamRef() { return this.paramRef; }
要持久化的代码

ParamRef1 pr = new ParamRef1();
pr.setName("TEST PARAM");

Param1 p1 = new Param1() p1.setParamValue("ONE") p1.setParamRef(pr);
Param1 p2 = new Param1() p2.setParamValue("TWO") p2.setParamRef(pr);

Set paramList = new HashSet() paramList.add(p1) paramList.add(p2)

pr.setParamList(paramList)

pr = paramRefDao1.save(pr)
请让我知道这些步骤是否正确。我得到以下例外。并且无法理解为什么父id在子表中不可用

原因:org.hibernate.exception.ConstraintViolationException: 无法将值NULL插入表的“PARAM_REF_ID”列中 “PARAM”;列不允许空值。插入失败


父表的列
PARAM_REF_ID
缺少值

ParamRef1 pr = new ParamRef1();
pr.setName("TEST PARAM");
pr.setParamRefId(1); // replace 1 with any other valid id as value

嗨,谢谢你的回复。实际上,我在ms sql server中为父表和子表使用标识。因此,我的父表在存储PK字段值方面没有任何问题。但同时,在持久化子表时,父键id不可用。猜猜我的代码有什么遗漏或错误?