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

Usando PostgreSQL com Spring MVC

Galera, o curso de Spring MVC usa o MySQL, mas quero usar o PostgreSQL. Configurei a classe JPAConfiguration com os dados de conexão, e adicionei a propriedade hibernate.deafult_schema:

Properties props = new Properties();
props.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
props.setProperty("hibernate.show_sql", "true");
props.setProperty("hibernate.default_schema", "public");
props.setProperty("hibernate.hbm2dll.auto", "update");

factoryBean.setJpaProperties(props);

Ainda assim o Hibernate não é capas de criar a tabela automaticamente, nem reconhecer o schema:

org.postgresql.util.PSQLException: ERROR: relation "public.produto" does not exist
  Posição: 13
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2182)

Alguma ideia do que falta na configuração?

5 respostas

Tentei de todas as formas que encontrei fazer a criação automática da tabela funcionar com a informação adicional do schema, mas no fim das contas criei a tabela e as colunas manualmente, e o exemplo funcionou.

Se alguém souber como fazer funcionar a criação automática da tabela com o schema fico agradecido.

Pelo erro, é como se não houvesse declarado a classe Produto.

Olá Emerson.

Neste caso a classe Produto estava declarada e mapeada. O problema é que o Hibernate não conseguiu criar a tabela automaticamente, por conta do schema. Dei andamento no curso, e precisei incluir dados agregados no Produto, e com isto o Hibernate precisaria criar a tabela "produto_precos" automaticamente, e novamente não conseguiu, e após eu criar esta tabela manualmente o exemplo funcionou.

solução!

Olá Luiz, tudo bem? Olhando o seu código, me parece que a propriedade utilizada está incorreta. Você digitou:

props.setProperty("hibernate.hbm2dll.auto", "update");

Em vez de:

props.setProperty("hibernate.hbm2ddl.auto", "update");

Repare no fim, que em vez de dll é ddl (de Data Definition Language)

Dê uma olhada na documentação, aqui.

Renato, era isso mesmo! Coisa besta, como costumam ser as causas desses erros.

Muito obrigado!