Erro PK Composta Hibernate

1 resposta
F

Olá,

Estou tendo problema com pk composta.

Banco

vcl_veiculo

  • vcl_cd_empresa pk
  • vcl_cd_veiculo pk

Segue abaixo o mapeamento

<class name="br.bean.Veiculo" table="vcl_veiculo">
        
        <composite-id name="veiculoID" class="br.bean.VeiculoID">
             <key-many-to-one name="veiculo"
                column="vcl_cd_veiculo"
                 class="br.bean.Veiculo"/>
             <key-many-to-one name="empresa"
                 column="vcl_cd_empresa"
                 class="br.bean.Empresa"/>
        </composite-id>
 ...

Veiculo

public class Veiculo implements Serializable {
    
    private VeiculoID veiculoID;
   ...

VeiculoID

public class VeiculoID implements Serializable {
    
    private Empresa empresa;
    private Veiculo veiculo;
   ...

Dá o seguinte erro

org.hibernate.MappingException: Foreign key (FK47AECF2FCABA5BA0:vcl_veiculo [vcl_cd_veiculo])) must have same number of columns as the referenced primary key (vcl_veiculo [vcl_cd_veiculo,vcl_cd_empresa])
Exception in thread "main" java.lang.ExceptionInInitializerError
	at br.util.HibernateUtil.<clinit>(HibernateUtil.java:32)
	at br.dao.OsmDAO.excluir(OsmDAO.java:302)
	at br.dao.OsmDAO.main(OsmDAO.java:439)
Caused by: org.hibernate.MappingException: Foreign key (FK47AECF2FCABA5BA0:vcl_veiculo [vcl_cd_veiculo])) must have same number of columns as the referenced primary key (vcl_veiculo [vcl_cd_veiculo,vcl_cd_empresa])
	at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:90)
	at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:73)
	at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1123)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1062)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1146)
	at br.util.HibernateUtil.<clinit>(HibernateUtil.java:26)
	... 2 more
Process exited with exit code 1.

1 Resposta

F

Conseguir visualizar o erro!

Criado 27 de setembro de 2007
Ultima resposta 28 de set. de 2007
Respostas 1
Participantes 1