Frage

Was ist der normale Weg, einfaches Update zu implementieren?

Beispiel: Wir haben Benutzer mit Telefonnummer NNNNNN und jetzt wollen wir es YYYYYY einstellen

.
@PersistenceContext
private EntityManager em;

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

Benutzereinheit ist so einfach wie möglich:

@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
}
War es hilfreich?

Lösung

Nach den JPA-Spezifikationen, EntityManager#merge() wird wieder einen Verweis auf andere Objekt als die bestandenen einen in, wenn das Objekt bereits im aktuellen Kontext geladen. Also, ich würde eher geben das Ergebnis des merge() und schreiben die update() Methode wie folgt:

@PersistenceContext
private EntityManager em;

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

Dann verwenden Sie es wie folgt (Überspringen der Initialisierung Teil):

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

Andere Tipps

die Eigenschaft ändern und dann mit EntityManager fusionieren ()

http: / /java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#merge%28T%29

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top