Não é bem um erro que está acontecendo, mais na hora de alterar meu produto, ele altera e grava também. Oque sera que está acontecendo? Meus código.
No meu Controller
public void salvar() {
if(produto.getId() == null) {
new DAO<Produto>(Produto.class).adiciona(this.produto);
} else {
new DAO<Produto>(Produto.class).alterar(this.produto);
}
this.produto = new Produto();
}
public void carregar(Produto produto) {
this.produto = produto;
}
Meu DAO.
public void alterar(T t) {
EntityManager manager = new JPAUtil().geEntityManager();
manager.getTransaction().begin();
manager.merge(t);
manager.getTransaction().commit();
manager.close();
}
Meu html
<h:form>
<h:dataTable id="tabelaProduto" var="produto" value="#{produtoController.produtos}">
<h:column>
<f:facet name="header">Nome</f:facet>
<h:outputText value="#{produto.nome}"/>
</h:column>
<h:column>
<f:facet name="header">Descricao</f:facet>
<h:outputText value="#{produto.descricao}"/>
</h:column>
<h:column>
<f:facet name="header">Preço</f:facet>
<h:outputText value="#{produto.preco}"/>
</h:column>
<h:column>
<f:facet name="header">Data</f:facet>
<h:outputText value="#{produto.data.time}">
<f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">Excluir</f:facet>
<h:commandLink value="Excluir" action="#{produtoController.remover(produto)}"/>
</h:column>
<h:column>
<f:facet name="header">Alterar</f:facet>
<h:commandLink value="Alterar" action="#{produtoController.carregar(produto)}"/>
</h:column>
</h:dataTable>
</h:form>
Como eu disse bem na hora de clicar no botao alterar ele altera pois grava o devido no banco de dados e não apenas a alteração