Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 Hibernate error Not null属性引用临时值-必须在当前操作之前保存临时实例_Java_Hibernate - Fatal编程技术网

Java Hibernate error Not null属性引用临时值-必须在当前操作之前保存临时实例

Java Hibernate error Not null属性引用临时值-必须在当前操作之前保存临时实例,java,hibernate,Java,Hibernate,我有两个相关的实体,一个是主表,主表中的一列是引用表 错误是: Caused by : javax.el.ELException: /jsf/submit.xhtml @20,76 listener="#{BankLocationMB.saveLocation}": org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException:

我有两个相关的实体,一个是主表,主表中的一列是引用表

错误是:

Caused by : javax.el.ELException: /jsf/submit.xhtml @20,76 listener="#{BankLocationMB.saveLocation}": org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: 
Not-null property references a transient value - transient instance must be saved before current operation : bank.entity.BankLocation.bankFormat -> bank.entity.RefBankFormat; 
nested exception is java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation : 
bank.entity.BankLocation.bankFormat -> bank.entity.RefBankFormat
@实体
@表(name=“BANK\u LOCATION”,schema=“owner”)
公共类BankLocation实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@基本(可选=假)
@NotNull
@列(name=“银行位置ID”)
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“银行位置ID序列”)
@SequenceGenerator(name=“BANK\u LOCATION\u ID\u SEQ”,sequenceName=“owner.BANK\u LOCATION\u ID\u SEQ”,allocationSize=1)
私人Long bankLocationId;
@尺寸(最大值=32)
@列(name=“银行名称”)
私有字符串bankName;
@JoinColumn(name=“BANK\u FORMAT\u ID”,referencedColumnName=“BANK\u FORMAT\u ID”)
@多通(targetEntity=RefBankFormat.class,可选=false)
私有RefBankFormat;
public RefBankFormat getBankFormat(){
返回格式;
}
公共格式(RefBankFormat bankFormat){
this.bankFormat=bankFormat;
}
@凌驾
公共int hashCode(){
int hash=0;
hash+=(bankLocationId!=null?bankLocationId.hashCode():0);
返回散列;
}
@凌驾
公共布尔等于(对象){
//TODO:警告-如果未设置id字段,此方法将不起作用
if(!(BankLocation的对象实例)){
返回false;
}
BankLocation其他=(BankLocation)对象;
如果((this.bankLocationId==null和其他.bankLocationId!=null)| |(this.bankLocationId!=null和!this.bankLocationId.equals(其他.bankLocationId))){
返回false;
}
返回true;
}
@凌驾
公共字符串toString(){
返回“bank.entity.BankLocation[bankLocationId=“+bankLocationId+”]”;
}
}

引用表实体

@实体
@表(name=“REF\u BANK\u FORMAT”,schema=“owner”)
公共类RefBankFormat实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@基本(可选=假)
@NotNull
@列(name=“银行\格式\ ID”)
私有整数bankFormatId;
@基本(可选=假)
@NotNull
@尺寸(最小值=1,最大值=50)
@列(name=“DISPLAY\u name”)
私有字符串显示名;
@尺寸(最大值=50)
@列(name=“DESCRIPTION”)
私有字符串描述;
公共格式{
}
public RefBankFormat(整型bankFormatId){
this.bankFormatId=bankFormatId;
}
public RefBankFormat(整数bankFormatId,字符串displayName){
this.bankFormatId=bankFormatId;
this.displayName=displayName;
}
公共整数getbankFormatId(){
返回bankFormatId;
}
public void setbankFormatId(整型bankFormatId){
this.bankFormatId=bankFormatId;
}
公共字符串getDisplayName(){
返回显示名;
}
public void setDisplayName(字符串displayName){
this.displayName=displayName;
}
公共字符串getDescription(){
返回说明;
}
公共void集合描述(字符串描述){
this.description=描述;
}
@凌驾
公共int hashCode(){
int hash=0;
hash+=(bankFormatId!=null?bankFormatId.hashCode():0);
返回散列;
}
@凌驾
公共布尔等于(对象){
//TODO:警告-如果未设置id字段,此方法将不起作用
if(!(RefBankFormat的对象实例)){
返回false;
}
RefBankFormat其他=(RefBankFormat)对象;
如果((this.bankFormatId==null和其他.bankFormatId!=null)| |(this.bankFormatId!=null和!this.bankFormatId.equals(其他.bankFormatId))){
返回false;
}
返回true;
}
@凌驾
公共字符串toString(){
返回“bank.entity.RefBankFormat[bankFormatId=“+bankFormatId+”]”;
}
}
谁能帮我解决我的问题

@ManyToOne(targetEntity=RefBankFormat.class, optional = false)
private RefBankFormat bankFormat;
bankFormat设置为强制(非空),因此您首先必须将此对象保存在数据库中,然后才允许保存BankLocation对象


定义可传递持久性的策略,也称为CascadeType。

您或多或少地问了两次相同的问题,答案与此处相同:

您是否尝试过此方法:@ManyToOne(cascade=CascadeType.ALL)您能用更改更新问题吗?