Pessoal, como posso estar criando uma tabela no banco de dados PostGres mas o nome da tabela ser CamelCase
Exemplo : Estou precisando cria a tabela com o nome ClienteLegado
Já tentei de tudo. A tabela é criada como clientelegado, cliente_legado, mas ClienteLegado não consegui fazer. Mesmo com as configurações abaixo a tabela é criada assim :
Hibernate: create table cliente_legado. Sabem alguma forma de
Classe :
@Entity @Table(name=“ClienteLegado”)
public class Cliente implements Serializable {
Dentro do meu banco de dados que está em produção que é PostGres está assim . ClienteLegado. Estou precisamos consumir os dados que estão dentro desta tabela, mas o Hibernate só cria a tabela assim : cliente_legado ou clientelegado. Ele cria de tudo quando é jeito , menos ClienteLegado
Você está tendo problemas como tabela não encontrada/inexistente?
Se não, então não tem por que definir o nome exato, até por que, o padrão do postgres é case insensitive.
Sim. Estou tendo problemas sim. Exemplo : eu tenho um mapeamento Rest que responde assim : http://localhost:8080/clientes
Só que ele não me retorna nada, pois ele primeiro criou assim :
Hibernate: create table cliente_legado (cliente_legado_id int8 not null, bairro varchar(255), cidade varchar(255), codigo varchar(255), endereco varchar(255), nome varchar(255), primary key (cliente_legado_id))
E olha onde faz o select :
select cliente0_.cliente_legado_id as cliente_1_0_, cliente0_.bairro as bairro2_0_, cliente0_.cidade as cidade3_0_, cliente0_.codigo as codigo4_0_, cliente0_.endereco as endereco5_0_, cliente0_.nome as nome6_0_ from cliente_legado cliente0
Dentro da tabela cliente_legado que não tem dados nenhum. A minha tabela que tem dados é a ClienteLegado
O problema não está no banco, nem no hibernate. O problema está na configuração que você fez.
A própria documentação do hibernate é bem clara quanto a não usar isso
E afins em produção.
De qualquer forma, se você excluir a propriedade name da anotação @Table, você estará forçando o hibernate a “criar” tabelas com os nomes das entities.
@Entity @Table
public class ClienteLegado implements Serializable {
private static final long serialVersionUID = 1L; @Id
// @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ClienteLegadoId")
private Long id;
Depois de subir a aplicação e informar o endereço do mapeamento
org.postgresql.util.PSQLException: ERROR: relation “cliente_legado” does not exist
Posição: 235
Você acha que isso é alguma coisa do postgres ? Por que nem no SqlServer deu isso.
O hibernate não vai procurar uma tabela pelo name caso o atributo name tenha sido suprimido/omitido. Neste caso, o padrão é buscar por uma tabela cujo nome seja exatamente igual ao nome da classe definida como @Entity.
Vale lembrar que este caso é um caso que foge da regra, pois a tabela no banco de dados do cliente contempla o nome em camel case , tal como ClienteLegado.
Fazendo testes quando o nome da tabela é em minúsculo que é o padrão do PostGres, não existe a necessidade disso tudo bastando seguir pelo método tradicional.