2014-11-24 81 views
0

嗨我新使用GAE和JPA,并且我尝试更新实体时遇到了一些问题。我复制下面的代码示例:GAE + JPA +更新实体正在失去其他实体关系

@Entity 
public class User { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Key key; 

private String userName; 

@ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL) 
private Address address; 
} 

当我在数据存储上保存一个用户实例时,它的存储没有问题。 之后,我从数据存储检索此实例,然后设置一个新的userName并尝试更新它。

public User updateUser(User user) { 
    EntityManager mgr = getEntityManager(); 
    if (!containsUser(user)) { 
     throw new EntityNotFoundException("Object does not exist"); 
    } 
    mgr.persist(user); 
} 

进行更新,新用户名被存储到数据存储,但由于地址字段FetchType.LAZY我失去了对更新的持久价值。 如何在不丢失其他值的情况下更新某些字段?

回答

1

尝试使用相同的方法获取并保存实体,否则您将丢失会话,并且管理器会将懒惰属性识别为空。

希望它有帮助!

+0

非常感谢。它以相同的方法处理所有事情 – Marco 2014-11-26 16:38:12