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

Hibernate cria coluna ao invés de renomear

Bom dia, tudo bem?

No meu projeto da aula estou utilizando o Mysql. A princípio configurei o atributo valorTotal na Classe "Pedido" e o hibernate criou de forma correta a coluna valorTotal na tabela pedidos.

Logo após, no curso foi mostrado que o nome da coluna correto seria "valor_total". Sendo assim alterei o código da minha classe Pedido, colocando a anotação @Column, conforme abaixo:

@Column(name = "valor_total")
private BigDecimal valorTotal;

Porém quando fui executar de novo a aplicação percebi que o Hibernate criou uma nova coluna "valor_total" ao invés de renomear. Sendo assim minha tabela pedidos ficou com 2 campos "duplicados": 'valorTotal' e 'valor_total'.

Há uma forma de eu configurar o Hibernate para que quando eu alterar o atributo de uma classe mapeada ele altere o valor da coluna ao invés de criar uma nova?

No meu persistence.xml estou usando as seguintes configurações:

                   <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
                   <property name="hibernate.show_sql" value="true" />
                   <property name="hibernate.format_sql" value="true" />
                   <property name="hibernate.hbm2ddl.auto" value="update"/>

Alguem poderia me ajudar?

2 respostas
solução!

Infelizmente o hibernate não tem esse poder mesmo. Por isso que em produção não é recomendado usar esse recurso de criação/alteração de tabelas dele. Na prática o pessoal sempre opta por alguma ferramenta de migração como flyway, liquibase e etc.

Muito obrigado pelo esclarecimento, Fausto!

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