Erro de Foreign key no Hibernate

0 respostas
obs

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á!

Criado 13 de setembro de 2006
Respostas 0
Participantes 1