relação ManyToOne quando FK faz parte da PK

1 resposta
D

Olá!

Eu tenho um problema ao tentar persistir uma entity quando a FK é parte da PK.
Estou utilizando JPA 1.0 e segui as documentações que encontrei.

Minha database:

Table Cliente
cli_id_cliente (PK)

Table Cartao
cli_id_cartao (PK)

Table ClienteCartao
cli_id_cliente (PK)
cli_id_cartao (PK)

Minhas entidades:

public class ClienteCartao{
   @Id
   @Column(name = "car_id_cartao")
   private int idCartao;

   @Id
   @Column(name = "cli_id_cliente")
   private int idCliente;

   @ManyToOne(fetch = FetchType.LAZY)
   @PrimaryKeyJoinColumns({@PrimaryKeyJoinColumn(name = "car_id_cartao", referencedColumnName = "car_id_cartao")})
   private Cartao cartao;

   @ManyToOne(fetch = FetchType.LAZY)
   @PrimaryKeyJoinColumns({@PrimaryKeyJoinColumn(name = "cli_id_cliente", referencedColumnName = "cli_id_cliente")})
   private Cliente cliente;

}

public class Cliente{
   @Id
   @Column(name = "cli_id_cliente")
   private int idCliente;

   @OneToMany(mappedBy="cliente")
   private java.util.List<ClientCartao> listClienteCartao;
}

public class Cartao{
   @Id
   @Column(name = "car_id_cartao")
   private int idCartao;

   @OneToMany(mappedBy = "cartao")
   private java.util.List<ClienteCartao> listClienteCartao;
}

Ao tentar persistir ClienteCartao, recebo a seguinte mensagem:

08:21:22,711 WARN [JDBCExceptionReporter] SQL Error: 207, SQLState: S0022
08:21:22,711 ERROR [JDBCExceptionReporter] [HOST]Invalid column name 'cartao_car_id_cartao'.
08:21:22,711 WARN [JDBCExceptionReporter] SQL Error: 207, SQLState: S0022
08:21:22,711 ERROR [JDBCExceptionReporter] [HOST]Invalid column name 'cliente_cli_id_cliente'.

Eu preciso configurar mais alguma coisa?

Eu segui esse tutorial:
[url]http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Example_ManyToOne_id_annotation[/url]

1 Resposta

D

Informação importante: estou utilizando JPA 1.0.

Java Enterprise 5, JBoss 5.1 e JPA 1.0.

Criado 20 de outubro de 2010
Ultima resposta 21 de out. de 2010
Respostas 1
Participantes 1