[TRANSFERIDO] Hibernate: primary key e foreign key com tipos diferentes

1 resposta
B

Bom dia pessoal,

Estou com um problema meio estranho no mapeamento de um BD Postgres, que eu não possuo permissão para alterar.
Neste BD há uma tabela ano_modelo, cuja chave primária é a coluna id_ano_modelo, do tipo bigserial (basicamente um bigint positivo).
Tabém temos uma tabela veiculo que se relaciona com a ano_modelo através de uma coluna também chamada id_ano_modelo.
Até aí tudo bem. O problema é que a coluna em veículo é do tipo int4 e em ano_modelo é bigserial.
Não entendo como o Postgres deixou colunas de tipos distintos se referenciarem, porém isso aconteceu.

O problema todo está no meu acesso com hibernate a essa estrutura.

Tenho uma classe Veículo, que entre outras coisas têm o código abaixo:

public class Veiculo {

    @ManyToOne
    @JoinColumn(name = "id_ano_modelo")
    private AnoModeloVeiculo anoModelo;

E uma classe AnoModeloVeiculo:

public class AnoModeloVeiculo {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id_ano_modelo")
    private Long AnoModeloVeiculo.id;
Agora que vem o problema: - Quando o tipo do id da classe AnoModeloVeiculo é Long, a aplicação dá erro no tipo da coluna do relacionamento:
Wrong column type in transporte.veiculo for column id_ano_modelo. Found: int4, expected: bigint
- Quando mudo o tipo para int, o erro dá no tipo do primary key:
Wrong column type in transporte.ano_modelo for column id_ano_modelo. Found: bigserial, expected: integer

Quando eu desfaço o relacionamento e deixo long, não dá erro nenhum.
Alguém tem alguma ideia? Existe alguma maneira de forçar o hibernate a fazer cast?

Obrigado

1 Resposta

B

Desculpem, postei no fórum errado. Deveria ter ido pro fórum específico de persistência.
Já refiz a postagem lá. Podem ignorar esta.

Criado 25 de julho de 2013
Ultima resposta 25 de jul. de 2013
Respostas 1
Participantes 1