Não consigo salvar Objeto - JPA com Hibernate

8 respostas Resolvido
java
D

Ao tentar rodar aplicação estou com Seguinte problema:
*OBS: Ele apenas cria a tabela, mais não salva o objeto.

Hibernate: 
create table Usuario (
    id integer not null auto_increment,
    senha varchar(255),
    usuario varchar(255),
    primary key (id)
) ENGINE=InnoDB
Exception in thread main javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: model.Usuario

at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)

at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)

at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1608)

at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1152)

at Util.JPAUtil.main(JPAUtil.java:22)

Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: model.Usuario

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:124)

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:58)

at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:778)

at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:751)

at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:756)

at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1146)

 1 more
Classe teste
    public class JPAUtil {

	public static void main(String[] args) {
		
		Usuario usuario = new Usuario();
		usuario.setId(1);
		usuario.setUsuario("irmao");
		usuario.setSenha("suspension");
		
		EntityManagerFactory managerFactory = Persistence.createEntityManagerFactory("oficina");
		EntityManager manager = managerFactory.createEntityManager();
		
		manager.getTransaction().begin();
		manager.persist(usuario);
		manager.getTransaction().commit();
		
		
		manager.close();
	}

}

8 Respostas

S

Oi Dayson, qual servidor você está utilizando em seu projeto?

D

Opa! Wildfly 10.0.1

D

troquei para o Tomcat e ficou do mesmo jeito.

OBS: Quando vou tentar persistir no banco não consigo, agora fui no meu banco e realizei alguns inserts e criei outra classe para carregar os objeto e consegui. Agora não sei o que está acontecendo na hora de persistir.

S
Solucao aceita

Que ótimo que conseguiu Dayson.

Funciona assim, se você utilizou os mesmos arquivos e no wildfly não funcionou e no Tomcat sim, foi porque cada servidor tem suas características e uma forma de configuração.
Esse é um dos momentos mais difíceis e trabalhosos (claro, alguns mais e alguns menos) e se esquecermos ou fizermos algo errado a partir daí começam os erros e algumas partes ou toda a lógica começa a falhar.

Continue no Tomcat e veja se consegues avançar no seu trabalho.

abraços

T

Se você ta persistindo um novo Usuario então não precisa usar o “usuario.setId(1)” pois é auto incremente, tenta remover essa linha que vai funcionar.

T

É isso msm, se o campo é id auto increment e você preenchr o Id, o hibernate entende q esse objeto já existe no banco, quando você dá o persist ele verifica q tem id e acha q o objeto na saio do contexto de persistência, por isso da mensagem de detached

tenta dar uma estudada nos estados do persistence context, vai te ajudar bastante com jpa

D

ajudou demais valeu!

D

Bom amigos, esqueci de colocar a solução do erro, apenas removi usuario.setId(1); Conforme nosso amigo Thiago_Nascimento. tinha falado.

Criado 11 de janeiro de 2017
Ultima resposta 16 de jan. de 2017
Respostas 8
Participantes 4