2014-11-24 82 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