Merge com Hibernate nao esta dando insert no bd

20 respostas
E

Bom dia a todos.

Estou tentando da um insert no MySQL, não gera nenhum erro o hibernate gera o insert no console mas quando vou no banco os dados nao estao la =[

metodo do insert

public <T> T atualiza(T entity, boolean executarFlush) { getEntityManager().getTransaction().begin(); getEntityManager().merge(entity); getEntityManager().getTransaction().commit(); return entity; }

CONSOLE:

16/05/2012 11:39:29 org.hibernate.annotations.common.Version <clinit> INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final} 16/05/2012 11:39:29 org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {4.0.1.Final} 16/05/2012 11:39:29 org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found 16/05/2012 11:39:29 org.hibernate.cfg.Environment buildBytecodeProvider INFO: HHH000021: Bytecode provider name : javassist 16/05/2012 11:39:29 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!) 16/05/2012 11:39:29 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000115: Hibernate connection pool size: 20 16/05/2012 11:39:29 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000006: Autocommit mode: true 16/05/2012 11:39:29 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/MySQL] 16/05/2012 11:39:29 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000046: Connection properties: {user=root, password=****, autocommit=true, release_mode=auto} 16/05/2012 11:39:29 org.hibernate.dialect.Dialect <init> INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect 16/05/2012 11:39:29 org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory 16/05/2012 11:39:29 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init> INFO: HHH000397: Using ASTQueryTranslatorFactory 16/05/2012 11:39:30 org.hibernate.tool.hbm2ddl.SchemaUpdate execute INFO: HHH000228: Running hbm2ddl schema update 16/05/2012 11:39:30 org.hibernate.tool.hbm2ddl.SchemaUpdate execute INFO: HHH000102: Fetching database metadata 16/05/2012 11:39:30 org.hibernate.tool.hbm2ddl.SchemaUpdate execute INFO: HHH000396: Updating schema 16/05/2012 11:39:30 org.hibernate.tool.hbm2ddl.TableMetadata <init> INFO: HHH000261: Table found: MySQL.corretor 16/05/2012 11:39:30 org.hibernate.tool.hbm2ddl.TableMetadata <init> INFO: HHH000037: Columns: [id_corretor, nome_corretor] 16/05/2012 11:39:30 org.hibernate.tool.hbm2ddl.TableMetadata <init> INFO: HHH000108: Foreign keys: [] 16/05/2012 11:39:30 org.hibernate.tool.hbm2ddl.TableMetadata <init> INFO: HHH000126: Indexes: [primary] 16/05/2012 11:39:30 org.hibernate.tool.hbm2ddl.SchemaUpdate execute INFO: HHH000232: Schema update complete Hibernate: insert into CORRETOR (NOME_CORRETOR) values (?)

E no bd nada =[

20 Respostas

H

Tenta fazer ae getEntityManager().flush();

Após o commit.

E

apos o commit da exception, agora eu usei o flush depois do merge mas ficou do mesmo jeito

H

evertonsilvagomesjava:
apos o commit da exception, agora eu usei o flush depois do merge mas ficou do mesmo jeito
Se após o commit dá exception então não vai rolar o insert mesmo. :stuck_out_tongue:

Qual o erro?

H

Commit != persistir dados no banco de dados.

Commit significa que você marcou os objetos para serem persistidos, mas eles só serão ao final da transação ou após um flush().

E

Hum entendi o commit, mas a exception e essa que ocorre quando uso o flush depois do commit.

javax.persistence.TransactionRequiredException: no transaction is in progress at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:970) at br.com.daos.GenericDaoBeanAgenciaTurismo.atualiza(GenericDaoBeanAgenciaTurismo.java:249) at br.com.daos.GenericDaoBeanAgenciaTurismo.atualiza(GenericDaoBeanAgenciaTurismo.java:242) at br.com.fachada.services.CorretorService.insereCorretor(CorretorService.java:10) at br.com.controller.Controller.insereCorretor(Controller.java:17) at br.com.view.CadastroCorretor$1.actionPerformed(CadastroCorretor.java:204) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at br.com.view.Gui$2.actionPerformed(Gui.java:77) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.AbstractButton.doClick(Unknown Source) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

E

Fala q nao tem transação em progresso, sabe como resolver?

T

Parceiro, posta pra gente o XML que você criou para mapear o BD.

E

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
	xmlns="http://java.sun.com/xml/ns/persistence">
	<persistence-unit name="AgenciaTurismoEntityManager" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>			
			<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/MySQL"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
            <property name="hibernate.connection.password" value="evertonjava" />
            <property name="hibernate.connection.username" value="root" />           
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> 	
            <property name="hibernate.show_sql" value="true"/> 	
		</properties>
	</persistence-unit>

</persistence>
T
evertonsilvagomesjava:
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
	xmlns="http://java.sun.com/xml/ns/persistence">
	<persistence-unit name="AgenciaTurismoEntityManager" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>			
			<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/MySQL"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
            <property name="hibernate.connection.password" value="evertonjava" />
            <property name="hibernate.connection.username" value="root" />           
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> 	
            <property name="hibernate.show_sql" value="true"/> 	
		</properties>
	</persistence-unit>

</persistence>
Insere essa linha no teu XML
<property name="hibernate.hbm2ddl.auto" value="update"/>
E

ela ja tava, eu tirei e continuou mesma coisa =[

T

Então o problema deve ser outro, mas sem essa linha de código você não vai conseguir inserir no banco.

E

Tenso velho, nao sei mais o que fazer =[

H

TiagoCedrim:
Insere essa linha no teu XML

<property name="hibernate.hbm2ddl.auto" value="update"/>

Na boa, essa linha vai ajudar em nada… O.o

Olha oq o erro está falando… Onde/Como você está iniciando a transação?

E

Eu recupero meu entityManager aqui:

public static GenericDaoBeanAgenciaTurismo getInstance(){ if(dao == null){ return dao = new GenericDaoBeanAgenciaTurismo(HibernateUtils.getEntityManager()); }else{ return dao; } }

public static EntityManager getEntityManager(){ if(em == null){ EntityManagerFactory emf = Persistence.createEntityManagerFactory("AgenciaTurismoEntityManager"); em = emf.createEntityManager(); } return em; }

E

Velho no Oracle funciona :shock:

H

E como está seu código agora?

E

ta do mesmo jeito so mudei o persistence.xml pra funcionar no oracle.

E

a parte de inserção ta assim

getEntityManager().getTransaction().begin(); getEntityManager().merge(entity); getEntityManager().getTransaction().commit();

H

E se tu colocar o flush no final, para o oracle, dá aquele erro?

E

da o mesmo erro…
velho, que coisa escrota essa do mysql nao entendi =/

Criado 16 de maio de 2012
Ultima resposta 16 de mai. de 2012
Respostas 20
Participantes 3