Domanda

Qual è il modo standard per implementare un aggiornamento semplice?

Esempio: abbiamo Utente con numero di telefono NNNNNN e ora vogliamo impostarlo su AAAAAA.

@PersistenceContext
private EntityManager em;

public void update (User transientUser) {
    what should be here?
}

L'entità utente è il più semplice possibile:

@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
}
È stato utile?

Soluzione

Secondo le specifiche JPA, EntityManager # merge () restituirà un riferimento a un altro oggetto rispetto a quello passato quando l'oggetto era già caricato nel contesto corrente . Quindi, preferirei restituire il risultato del merge () e scrivere il metodo update () in questo modo:

@PersistenceContext
private EntityManager em;

public User update (User transientUser) {
    return em.merge(transientUser);
}

Quindi, usalo in questo modo (saltando la parte di inizializzazione):

user.setPhone("YYYYYY");
user = dao.update(user);

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top