@Entity
@Table(name="tbl_name")
public class Test extends BaseEntity {
@OneToOne( fetch = FetchType.LAZY)
@JoinColumn(name = "ALL_ORG_MST_SECTION_ID",nullable = true)
private AllOrgMst allOrgMstSection;
@OneToOne(fetch = FetchType.LAZY )
@JoinColumn(name = "ALL_ORG_MST_SUB_SECTION_ID",nullable = true)
private AllOrgMst allOrgMstSubSection;
}
{
"allOrgMstSection": {
"id": 23
},
"allOrgMstSubSection": {
"id": null
}
}
@Autowired
private TestRepository testRepository;
@Override
public Test save2(Test entity) {
return testRepository.save(entity);
}
在baseEntity中具有Id
从您提供的日志和模型中可以清楚地看出,您试图保存一个非托管对象,该对象具有ID
。
解决方案是在保存之前,先对瞬态对象进行管理(这些对象已经在数据库中)。
这里
"allOrgMstSection": {
"id": 23
},
java prettyprint-override">public Test save(Test test) {
if(test.getAllOrgMstSection() != null && test.getAllOrgMstSection().getId() != null) {
Long id = test.getAllOrgMstSection().getId();
test.setAllOrgMstSection(allOrgMstSectionRepository.getOne(id));
}
if(test.getAllOrgMstSubSection() != null && test.getAllOrgMstSubSection().getId() != null ) {
Long id = test.getAllOrgMstSubSection().getId();
test.setAllOrgMstSubSection(allOrgMstSubSectionRepository.getOne(id));
}
return testRepository.save(test);
}
if(test.getAllOrgMstSection() != null && test.getAllOrgMstSection().getId() != null) {
AllOrgMstSection updatedAllOrgMsgSection = test.getAllOrgMstSection();
Long id = test.getAllOrgMstSection().getId();
AllOrgMstSection existingAllOrgMstSection = allOrgMstSectionRepository.findById(id);
BeanUtils.copyProperties(updatedAllOrgMsgSection, existingAllOrgMstSection /*pass property names you don't want to update*/);
test.setAllOrgMstSection(existingAllOrgMstSection);
}
我试图将用户详细信息存储到以下表中:user、role、user_role。当试图保存详细信息时,它会引发以下错误。 托管刷新时出错[org.hibernate.transientPropertyValueException:object引用未保存的瞬态实例-在刷新前保存瞬态实例 这里user_role是父表,user和role表是子表。我尝试了cascade=cascade.all。即使它也会犯
我有两个hibernate实体Coupon和CouponHistory,CouponHistory和Coupon之间的单向关系。 有一个事务性服务方法试图在单个事务中保存这两个实体。Spring在这里被用来处理事务。 任何帮助都将不胜感激!
我有两个例子。一个是项目,一个是模块。< code >一对多关系。 我将模块设置到项目中。然后使用。第一次,因为数据库中没有记录,所以项目和模块可以保存到数据库中。然而,第二次,因为我不需要创建新项目,我只创建新模块,然后将模块设置回项目。 发生异常。 对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例。 有什么办法可以解决这个问题吗谢谢
上图显示了表之间的关系。 AddressType表包含静态值,如mailing、home、work等。 在AddressTypeRel模型类中,我有一个带有多对一注释的AddressType对象
错误: 我还尝试了,但是 病因是什么?显然,我设置了nullable=true(在数据库中也是如此),尽管我有这个错误。有什么想法吗?
user.java是 我正在使用这个视频中提到的存储库,是 和 这个问题有什么更好的解决办法吗?