Quelle est la méthode standard pour implémenter une mise à jour simple?
Exemple: nous avons un utilisateur avec le numéro de téléphone NNNNNN et nous voulons maintenant le définir sur AAAAAA.
@PersistenceContext
private EntityManager em;
public void update (User transientUser) {
what should be here?
}
L'entité utilisateur est aussi simple que possible:
@Entity
@Table (name = "USER")
public class User {
@Id
@GeneratedValue
private Integer id;
@Column (nullable = false, unique = true)
private String login;
private String phone;
public User () { }
... //some setters and getters
}
Selon les spécifications JPA, EntityManager#merge()
renverra une référence à n autre objet que celle passée lorsque l'objet était déjà chargé dans le contexte actuel. Donc, je préfère retourner le résultat de la merge()
et écrire la méthode update()
comme ceci:
@PersistenceContext
private EntityManager em;
public User update (User transientUser) {
return em.merge(transientUser);
}
Ensuite, utilisez-le comme ceci (en sautant la partie d'initialisation):
user.setPhone("YYYYYY");
user = dao.update(user);
changer la propriété et ensuite utiliser EntityManager merge ()
http://Java.Sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#merge%28T%29