Как реализовать метод update () в DAO, используя EntityManager (JPA)?
-
05-07-2019 - |
Вопрос
Каков стандартный способ реализации простого обновления? Р>
Пример: у нас есть Пользователь с номером телефона NNNNNN, и теперь мы хотим установить для него ГГГГГГ.
@PersistenceContext
private EntityManager em;
public void update (User transientUser) {
what should be here?
}
Пользовательская сущность настолько проста, насколько это возможно:
@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
}
Решение
В соответствии со спецификациями JPA, EntityManager # merge ()
будет возвращать ссылку на другой объект, который был передан, когда объект уже был загружен в текущем контексте. , Поэтому я лучше верну результат merge ()
и напишу метод update ()
следующим образом:
@PersistenceContext
private EntityManager em;
public User update (User transientUser) {
return em.merge(transientUser);
}
Затем используйте его следующим образом (пропуская часть инициализации):
user.setPhone("YYYYYY");
user = dao.update(user);
Другие советы
измените свойство и затем используйте EntityManager merge ()
http: / /java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#merge%28T%29 р>