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

@GeneratedValue(strategy=GenerationType.IDENTITY)

Tem uma coisa me incomodando, e por estar diferente do exemplo dado no video não sei dizer se esta certo ou errado. Pela aula ensina usar

@GeneratedValue(strategy=GenerationType.IDENTITY)

porem usando assim da o seguinte erro

Exception in thread "main" java.lang.ClassCastException: org.hibernate.id.IdentifierGeneratorHelper$2 cannot be cast to java.base/java.lang.Integer
    at org.hibernate.type.descriptor.java.internal.IntegerJavaDescriptor.unwrap(IntegerJavaDescriptor.java:26)
    at org.hibernate.type.descriptor.sql.spi.IntegerSqlDescriptor$1.doBind(IntegerSqlDescriptor.java:67)
    at org.hibernate.sql.AbstractJdbcValueBinder.bind(AbstractJdbcValueBinder.java:69)
    at org.hibernate.sql.ast.tree.expression.LiteralParameter.bindParameterValue(LiteralParameter.java:86)
    at org.hibernate.sql.exec.internal.JdbcMutationExecutorImpl.execute(JdbcMutationExecutorImpl.java:61)
    at org.hibernate.sql.exec.internal.JdbcMutationExecutorImpl.execute(JdbcMutationExecutorImpl.java:109)
    at org.hibernate.metamodel.model.domain.internal.entity.SingleTableEntityTypeDescriptor.executeOperation(SingleTableEntityTypeDescriptor.java:768)
    at org.hibernate.metamodel.model.domain.internal.entity.SingleTableEntityTypeDescriptor.executeInsert(SingleTableEntityTypeDescriptor.java:384)
    at org.hibernate.metamodel.model.domain.internal.entity.SingleTableEntityTypeDescriptor.executeInsert(SingleTableEntityTypeDescriptor.java:376)
    at org.hibernate.metamodel.model.domain.internal.entity.SingleTableEntityTypeDescriptor.insertInternal(SingleTableEntityTypeDescriptor.java:204)
    at org.hibernate.metamodel.model.domain.spi.AbstractEntityTypeDescriptor.insert(AbstractEntityTypeDescriptor.java:885)
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:79)
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:643)
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:278)
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:259)
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:313)
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:392)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:301)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:208)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:139)
    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:59)
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:776)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:761)
    at modelo.util.PopulaMovimentacao.main(PopulaMovimentacao.java:37)

e eu trocando para

@GeneratedValue(strategy=GenerationType.AUTO)

funciona "normal". E nessa parte que esta me incomodando, porque minhas tabelas ficaram com o id sequencial.

Ex: add algo na tabela "CONTA" fica com o "id 1", add na "MOVIMENTACAO" fica com "id 2", volte a add na "CONTA" fica com "id 3" e assim sucessivamente.

CONTA
 agencia | banco                         | id | numero  | titular
1234    | 104 - CAIXA ECONOMICA FEDERAL |  5 | 98654-3 | Alexandre Duarte    |
| 0123    | Caixa Economicaa              | 30 | 456     | Leonardo

 conta_id | data                | descricao                           | id | tipo    | valor   |
+----------+---------------------+-------------------------------------+----+---------+---------+
|        1 | 2019-05-02 23:47:07 | Conta de luz - ABRIL/2012           |  6 | SAIDA   |  135.00 |

O certo não seria "CONTA" ficar com "id 2" e "MOVIMENTACAO" "id 1" e...? Eu estou entendendo errado como funciona, ou realmente tem algo errado nesse código?

Ps. Estou conseguindo progredir no curso usando @GeneratedValue(strategy=GenerationType.AUTO), mas acho que pode me dificultar sem entender porque esta assim.

2 respostas

Qual banco está usando?

solução!

Estou usando o MySQL 5.7.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software