Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 7 da Aula 2 - Configuração e inicialização do JPA

Quando rodo, tenho o seguinte erro:

Hibernate: select next_val as id_val from SEQ_CONTAS for update

Set 21, 2015 2:56:41 PM org.hibernate.id.enhanced.TableStructure$1$1 execute ERROR: could not read a hi value - you need to populate the table: SEQ_CONTAS Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: could not read a hi value - you need to populate the table: SEQ_CONTAS 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 br.com.mertens.financas.teste.TesteConta.main(TesteConta.java:23) Caused by: org.hibernate.id.IdentifierGenerationException: could not read a hi value - you need to populate the table: SEQ_CONTAS at org.hibernate.id.enhanced.TableStructure$1$1.execute(TableStructure.java:143) at org.hibernate.id.enhanced.TableStructure$1$1.execute(TableStructure.java:126) at org.hibernate.jdbc.WorkExecutor.executeReturningWork(WorkExecutor.java:55) at org.hibernate.jdbc.AbstractReturningWork.accept(AbstractReturningWork.java:34) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:56) at org.hibernate.id.enhanced.TableStructure$1.getNextValue(TableStructure.java:125) at org.hibernate.id.enhanced.PooledOptimizer.generate(PooledOptimizer.java:73) at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:417) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101) at org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:67) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:189) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:58) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:774) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:747) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:752) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1146) ... 1 more

3 respostas
solução!

Resolvi usando a seguinte estrategia:

@Id @GenericGenerator(name="gen",strategy="increment") @GeneratedValue(generator="gen") private Integer id;

Oi Guilherme, tudo bem?

Isto é porque o mysql utiliza autoincremento em vez de sequências. Se você utilizar:

@GeneratedValue(strategy=GenerationType.IDENTITY)

Também deve funcionar, pelo menos funcionou pra mim.

Ainda não entendi, porque o GenerationType.AUTO não funcionou aqui. Vou ver se descubro. Se alguém aqui souber... :)

Bem, que bom que funcionou, qualquer dúvida avisa.

Abs.

Lucas, sua alternativa também rodou.

Muito obrigado.