java对象引用一个未保存的临时实例:在刷新之前保存临时实例
我有两个实体:PlayerProfileEntity&;用户信息实体 我加入了userInfoEntity&;PlaterProfileEntity并将我的记录保存在数据库中,如下所示:
Session session = sessionFactory.openSession();
Transaction tr = session.beginTransaction();
Criteria crit = session.createCriteria(PlayerProfileEntity.class);
player.setUserId(new UserInfoEntity());
player.getUserId().setAddress(user.getUserId().getAddress());
session.save(player);
tr.commit();
我在我的PlayerProfileEntity课程中使用了这个协会
@ManyToOne (fetch = FetchType.LAZY)
@Cascade({CascadeType.REFRESH})
@JoinColumn(name="userid")
我得到了这个错误:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.shared.entity.UserInfoEntity
注意:如果我使用CascadeType。好吧,我有个错误:
Cannot add or update a child row: a foreign key constraint fails
你知道我该怎么解决这个问题吗
谢谢
# 1 楼答案
# 2 楼答案
我也面临同样的问题,经过大量调试后,我发现从实体中删除@AllArgsConstructor并添加
为我工作
# 3 楼答案
每当您试图保存对象而不保存适当的联接时,
TransientObjectException
就会出现。必须先保存UserInfoEntity
,然后才能保存PlayerInfoEntity
类通过使用它,您将特定的
UserInfoEntity
分配给PlayerInfoEntity
。但是UserInfoEntity
没有任何ID。如何映射两者?这就是特例即将到来的原因希望对你有帮助