Como implementar o método update () no DAO usando o entityManager (JPA)?
-
05-07-2019 - |
Pergunta
Qual é a maneira padrão de implementar atualização simples?
Exemplo: temos o usuário com número de telefone nnnnnn e agora queremos defini -lo como yyyyyy.
@PersistenceContext
private EntityManager em;
public void update (User transientUser) {
what should be here?
}
A entidade do usuário é o mais simples possível:
@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
}
Solução
De acordo com as especificações da JPA, EntityManager#merge()
retornará uma referência a outro objeto do que o passou quando o objeto já estava carregado no contexto atual. Então, eu prefiro devolver o resultado do merge()
e escreva o update()
Método como este:
@PersistenceContext
private EntityManager em;
public User update (User transientUser) {
return em.merge(transientUser);
}
Em seguida, use assim (pulando a parte da inicialização):
user.setPhone("YYYYYY");
user = dao.update(user);
Outras dicas
Altere a propriedade e use o entityManager Merge ()
http://java.sun.com/javaee/5/docs/api/javax/persistence/entitymanager.html#merge%28t%29
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow