Tenho a seguinte estrutura no bd:
empresa
emp_res varchar(3) primary key,
emp_des varchar(50)
produto
pr_cod_pro varchar(20) primary key,
pr_emp_res varchar(3) primary key,
pr_des_pro varchar(50)
embalagem
em_cod_emb varchar(3) primary key,
em_emp_res varchar(3) primary key
em_des_emb varchar(30)
produto_embalagem (produto x embalagem)
pe_emp_res varchar(3) primary key,
pe_cod_pro varchar(20) primary key,
pe_cod_emb varchar(3) primary key
Estou criando classes para representar minhas chaves compostas. O meu problema está com a última tabela. Criei uma classe para representar esta chave composta desta maneira:
public class ProdutoEmbalagemPk {
private Empresa empresa; //pe_emp_res
private Produto produto; //pe_cod_pro
private Embalagem embalagem; //pe_cod_emb
//get's, set's, equals and hashCode method
}
Só que ele acusa o seguinte erro:
net.sf.hibernate.MappingException: Foreign key (produto_embalagem [pe_cod_emb])) must have same number of columns as the referenced primary key (embalagem [em_cod_emb,em_emp_res])
at net.sf.hibernate.mapping.ForeignKey.setReferencedTable(ForeignKey.java:60)
at net.sf.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:667)
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:761)
at net.sf.hibern8ide.Hibern8IDE.initialize(Hibern8IDE.java:227)
at net.sf.hibern8ide.Hibern8IDE.setupUI(Hibern8IDE.java:486)
at net.sf.hibern8ide.Hibern8IDE.start(Hibern8IDE.java:421)
at net.sf.hibern8ide.Hibern8IDE.startWith(Hibern8IDE.java:389)
at br.com.atmtec.dao.hibernate.HibernateConsole.main(HibernateConsole.java:70)
Acredito que o problema está em utilizar objetos que possuem chave composta na composição de outra chave composta. Alguém confirma isso? Se sim, qual a solução para o problema?