报错信息:
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : Entity1 -> Entity2
Entity1和Entity2的关系:
@ManyToOne
@JoinColumn(name = "entity2_id")
private Entity2 entity2;
原因分析:
经过分析,hibernate在保存Entity1的信息时,发现Entity1中关联的entity2对象此时处于非持久态,在保存时就会报错。
解决方法思考:
使用Hibernate进行数据存储时,所需保存的持久类对象A中如果关联了其他数据表持久类对象B。那么对象B在Hibernate的session管理下的状态必须是持久态或者为null,瞬时态和脱管态都会有问题。因此:
- 如果关联的对象B不需要,将B置为null。
- 如果关联的对象B需要,重新调用查询方法查询出对象B,使B成为持久态,然后再进行A对象的保存。