Pessoal,
Eu estou tendo um erro quando tento salvar qualquer objeto no banco com hibernate, o erro é o seguinte:
Foreign key (FK66D8DFF021206EB7:historico [id_historico])) must have same number of columns as the referenced primary key (historico [id_historico,id_requisito]).
porem o mapeamento parece está certo:
tabela do banco:
CREATE TABLE requisito (
TITULO VARCHAR(50) NOT NULL,
ID_REQUISITO int4 NOT NULL DEFAULT nextval('seq_requisito'::text) NOT NULL,
ID_LOCK int4 NULL,
ID_PROJETO int4 NULL,
ID_TIPO int4 NULL,
ID_REQUISITO_PAI int4 NULL,
CONSTRAINT XPKREQUISITO
PRIMARY KEY (ID_REQUISITO),
CONSTRAINT R_13
FOREIGN KEY (ID_REQUISITO_PAI)
REFERENCES REQUISITO,
CONSTRAINT R_5
FOREIGN KEY (ID_PROJETO)
REFERENCES PROJETO,
CONSTRAINT R_4
FOREIGN KEY (ID_TIPO)
REFERENCES TIPO,
CONSTRAINT R_3
FOREIGN KEY (ID_LOCK)
REFERENCES LOCK
);
CREATE TABLE historico (
PARECERVALIDACAO VARCHAR(200) NULL,
DATAEXCLUSAO DATE NULL,
DESCRICAO VARCHAR(200) NOT NULL,
COMENTARIO VARCHAR(200) NOT NULL,
DATAREVISAO DATE NOT NULL,
REVISAO int4 NOT NULL,
ID_HISTORICO int4 NOT NULL DEFAULT nextval('seq_historico '::text) NOT NULL,
ID_REQUISITO int4 NOT NULL,
ID_PRIORIDADE int4 NULL,
ID_STATUS int4 NULL,
CONSTRAINT XPKHISTORICO
PRIMARY KEY (ID_HISTORICO, ID_REQUISITO),
CONSTRAINT R_8
FOREIGN KEY (ID_REQUISITO)
REFERENCES REQUISITO,
CONSTRAINT R_7
FOREIGN KEY (ID_PRIORIDADE)
REFERENCES PRIORIDADE,
CONSTRAINT R_6
FOREIGN KEY (ID_STATUS)
REFERENCES STATUS
);
CREATE TABLE autor (
SENHA VARCHAR(10) NOT NULL,
LOGIN VARCHAR(20) NOT NULL,
NOME VARCHAR(50) NOT NULL,
ID_AUTOR int4 NOT NULL DEFAULT nextval('seq_autor'::text),
ID_PAPEL int4 NULL,
CONSTRAINT XPKAUTOR
PRIMARY KEY (ID_AUTOR),
CONSTRAINT R_2
FOREIGN KEY (ID_PAPEL)
REFERENCES PAPEL
);
CREATE TABLE historico_autor (
ID_HISTORICO int4 NOT NULL,
ID_AUTOR int4 NOT NULL,
ID_REQUISITO int4 NOT NULL,
CONSTRAINT XPKHISTORICO_AUTOR
PRIMARY KEY (ID_AUTOR, ID_HISTORICO, ID_REQUISITO),
CONSTRAINT R_12
FOREIGN KEY (ID_HISTORICO, ID_REQUISITO)
REFERENCES HISTORICO,
CONSTRAINT R_11
FOREIGN KEY (ID_AUTOR)
REFERENCES AUTOR
);
meus HBMs:
<hibernate-mapping>
<class name="br.com.pos.Historico" table="historico">
<composite-id name="identificador"
class="br.com.pos.HistoricoId">
<key-many-to-one name="historico"
class="br.com.pos.Historico" column="id_historico" />
<key-many-to-one name="requisito"
class="br.com.pos.Requisito" column="id_requisito" />
</composite-id>
<many-to-one name="prioridade" class="br.com.pos.Prioridade"
fetch="select">
<column name="id_prioridade" />
</many-to-one>
<!--
<many-to-one name="requisito" class="br.com.pos.Requisito" update="false" insert="false" fetch="select">
<column name="id_requisito" not-null="true" />
</many-to-one>
-->
<many-to-one name="status" class="br.com.pos.Status" fetch="select">
<column name="id_status" />
</many-to-one>
<property name="parecervalidacao" type="string">
<column name="parecervalidacao" length="200" />
</property>
<property name="dataexclusao" type="date">
<column name="dataexclusao" length="4" />
</property>
<property name="descricao" type="string">
<column name="descricao" length="200" not-null="true" />
</property>
<property name="comentario" type="string">
<column name="comentario" length="200" not-null="true" />
</property>
<property name="revisao" type="java.lang.Integer">
<column name="revisao" length="5" not-null="true" />
</property>
<property name="datarevisao" type="date">
<column name="datarevisao" length="4" not-null="true" />
</property>
<set name="historicoAutores" inverse="true">
<key>
<column name="id_historico" not-null="true" />
<column name="id_requisito" not-null="true" />
</key>
<one-to-many class="br.com.pos.HistoricoAutor" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="br.com.pos.Requisito" table="requisito">
<id name="identificador" type="java.lang.Integer">
<column name="id_requisito" />
<generator class="sequence">
<param name="sequence">SEQ_REQUISITO</param>
</generator>
</id>
<many-to-one name="projeto" class="br.com.pos.Projeto" fetch="select">
<column name="id_projeto" />
</many-to-one>
<many-to-one name="tipo" class="br.com.pos.Tipo" fetch="select">
<column name="id_tipo" />
</many-to-one>
<many-to-one name="lock" class="br.com.pos.Lock" fetch="select">
<column name="id_lock" />
</many-to-one>
<many-to-one name="requisitoPai" class="br.com.pos.Requisito" fetch="select">
<column name="id_requisito_pai" />
</many-to-one>
<property name="titulo" type="string">
<column name="titulo" length="50" not-null="true" />
</property>
<set name="requisitos" inverse="true">
<key>
<!-- column name="id_requisito_pai" /-->
<column name="id_requisito" />
</key>
<one-to-many class="br.com.pos.Requisito" />
</set>
<set name="historicos" inverse="true">
<key>
<column name="id_requisito" not-null="true" />
</key>
<one-to-many class="br.com.pos.Historico" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="br.com.pos.Autor" table="autor">
<id name="identificador" type="java.lang.Integer">
<column name="id_autor" />
<generator class="sequence">
<param name="sequence">SEQ_AUTOR</param>
</generator>
</id>
<many-to-one name="papel" class="br.com.pos.Papel" fetch="select">
<column name="id_papel" />
</many-to-one>
<property name="senha" type="string">
<column name="senha" length="10" not-null="true" />
</property>
<property name="login" type="string">
<column name="login" length="20" not-null="true" />
</property>
<property name="nome" type="string">
<column name="nome" length="50" not-null="true" />
</property>
<set name="locks" inverse="true">
<key>
<column name="id_autor" />
</key>
<one-to-many class="br.com.pos.Lock" />
</set>
<!--
<set name="historicoAutores" inverse="true">
<key>
<column name="id_autor" not-null="true" />
</key>
<one-to-many class="br.com.pos.HistoricoAutor" />
</set>
-->
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="br.com.pos.HistoricoAutor" table="historico_autor">
<composite-id name="identificador" class="br.com.pos.HistoricoAutorId">
<key-many-to-one name="autor" class="br.com.pos.Autor" column="id_autor"/>
<key-many-to-one name="historico" class="br.com.pos.Historico" column="id_historico"/>
<key-many-to-one name="requisito" class="br.com.pos.Requisito" column="id_requisito"/>
</composite-id>
</class>
</hibernate-mapping>
quem poder ajudar eu agradeço desde já!