object引用未保存的瞬态实例:在刷新之前保存瞬态实例

use*_*162 15 java hibernate

我有两个实体:PlayerProfileEntity和UserInfoEntity我有一个关于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();
Run Code Online (Sandbox Code Playgroud)

我在我的PlayerProfileEntity类中使用了这个assosiation

@ManyToOne (fetch = FetchType.LAZY)
@Cascade({CascadeType.REFRESH})
@JoinColumn(name="userid")
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

org.hibernate.TransientObjectException: object references an unsaved transient instance - save     the transient instance before flushing: com.shared.entity.UserInfoEntity
Run Code Online (Sandbox Code Playgroud)

注意:如果我使用CascadeType.All,我收到此错误:

Cannot add or update a child row: a foreign key constraint fails
Run Code Online (Sandbox Code Playgroud)

任何想法我怎么能解决这个问题

谢谢

PVR*_*PVR 20

TransientObjectException每次尝试保存对象不保存适当Joins.You有保存来自UserInfoEntity第一和事后你可以保存你的PlayerInfoEntity类.

player.setUserId(new UserInfoEntity());
Run Code Online (Sandbox Code Playgroud)

通过使用这种要指定特定的UserInfoEntityPlayerInfoEntity.但UserInfoEntity没有任何身份证明.如何映射?这就是异常即将到来的原因.

希望它会对你有所帮助.