Olá pessoal to com um problema aqui de mapeamento, não estou conseguindo mapear a seguinte situação…
tenho uma classe " CadastroGeral" e outra Cliente.
a Cadastro geral tem um compositID(cod_cadastro, tipoCadastro), na classe cliente temos os campos (cod_cadastro, tipoCadastro) como chave estrangeira e composta. tenho um relacionamento um para um … é um banco de dados legado, por isso tantas compostas…
segue os sql das tabelas…
CREATE TABLE tblcdgeral
(
cod_cadastro integer NOT NULL,
tipo_cadastro character varying(1) NOT NULL,
cod_empresa character varying(3),
cod_area character varying(3) NOT NULL,
nome_cadastro character varying(50),
apelido character varying(30),
cod_cond_pgto character varying(4),
tipo_fj character varying(1),
cpf_cnpj character varying(18),
rg_ie character varying(14),
data_cadastro timestamp without time zone,
cod_situacao character varying(2),
cod_ramo character varying(4),
data_alteracao timestamp without time zone,
uf character varying(2),
cod_categoria character varying(4),
cod_forma_aprovacao character varying(3),
observacao character varying(100),
isuframa character varying(9),
cod_rota character varying(5),
ordem_rota integer,
distancia integer,
CONSTRAINT tblcdgeral_pkey PRIMARY KEY (cod_cadastro, tipo_cadastro),
CONSTRAINT fk_cdarea_cdgeral FOREIGN KEY (cod_area)
REFERENCES tblcdarea (cod_area) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdcategoria_cdgeral FOREIGN KEY (cod_categoria)
REFERENCES tblcdcategoria (cod_categoria) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdcondicaopgto_cdgeral FOREIGN KEY (cod_cond_pgto)
REFERENCES tblcdcondicaopgto (cod_cond_pgto) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdestado_cdgeral FOREIGN KEY (uf)
REFERENCES tblcdestado (uf) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdformaaprovacao_cdgeral FOREIGN KEY (cod_forma_aprovacao)
REFERENCES tblcdformaaprovacao (cod_forma_aprovacao) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdramo_cdgeral FOREIGN KEY (cod_ramo)
REFERENCES tblcdramo (cod_ramo) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdrota_cdgeral FOREIGN KEY (cod_rota)
REFERENCES tblcdrota (cod_rota) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdsituacao_cdgeral FOREIGN KEY (cod_situacao)
REFERENCES tblcdsituacao (cod_situacao) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cmempresa_cdgeral FOREIGN KEY (cod_empresa)
REFERENCES tblcmempresa (cod_empresa) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cmtipocadastro_cdgeral FOREIGN KEY (tipo_cadastro)
REFERENCES tblcmtipocadastro (tipo_cadastro) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
ALTER TABLE tblcdgeral OWNER TO postgres;
GRANT ALL ON TABLE tblcdgeral TO postgres;
GRANT ALL ON TABLE tblcdgeral TO public;
CREATE TABLE tblcdcliente
(
cod_cadastro integer NOT NULL,
tipo_cadastro character varying(1) NOT NULL,
cod_lista integer,
perc_desconto numeric(5,2),
limite_credito numeric(15,2),
cod_vendedor integer,
tipo_vendedor character varying(1),
cod_banco_caixa integer,
cod_forma_cob integer,
data_abertura_firma timestamp without time zone,
data_alt_contrato timestamp without time zone,
qtde_funcionario integer,
faturamento_mes numeric(15,2),
capital_social_integ numeric(15,2),
imovel_proprio character varying(1),
cod_grupo_empresa integer,
cod_analise_credito integer,
prazo_medio_max integer,
prazo_atraso_max integer,
data_renova_credito timestamp without time zone,
cod_operador integer,
tipo_cadastro_op character varying(1),
hora_ligacao character varying(6),
data_ult_agenda timestamp without time zone,
info_dia character varying(7),
periodicidade character varying(1),
semana character varying(1),
cod_transportadora1 integer,
tipo_cadastro_transp1 character varying(1),
cod_transportadora2 integer,
tipo_cadastro_transp2 character varying(1),
CONSTRAINT tblcdcliente_pkey PRIMARY KEY (cod_cadastro, tipo_cadastro),
CONSTRAINT fk_cdanalisecredito_cdcliente FOREIGN KEY (cod_analise_credito)
REFERENCES tblcdanalisecredito (cod_analise_credito) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdgeral_cdclienteop FOREIGN KEY (cod_operador, tipo_cadastro_op)
REFERENCES tblcdgeral (cod_cadastro, tipo_cadastro) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdgeralt1_cdcliente FOREIGN KEY (cod_transportadora1, tipo_cadastro_transp1)
REFERENCES tblcdgeral (cod_cadastro, tipo_cadastro) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdgeralt2_cdcliente FOREIGN KEY (cod_transportadora2, tipo_cadastro_transp2)
REFERENCES tblcdgeral (cod_cadastro, tipo_cadastro) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cdgrupoempresa_cdcliente FOREIGN KEY (cod_grupo_empresa)
REFERENCES tblcdgrupoempresa (cod_grupo_empresa) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_tblcbbancocaixa_tblcdcliente FOREIGN KEY (cod_banco_caixa)
REFERENCES tblcbbancocaixa (cod_banco_caixa) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_tblcbformacob_tblcdcliente FOREIGN KEY (cod_forma_cob)
REFERENCES tblcbformacob (cod_forma_cob) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_tblcdgeral_tblcdcliente FOREIGN KEY (cod_cadastro, tipo_cadastro)
REFERENCES tblcdgeral (cod_cadastro, tipo_cadastro) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_tblcdvendedor_tblcdcliente FOREIGN KEY (cod_vendedor, tipo_vendedor)
REFERENCES tblcdgeral (cod_cadastro, tipo_cadastro) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_tblcelistapreco_tblcdcliente FOREIGN KEY (cod_lista)
REFERENCES tblcelistapreco (cod_lista) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
ALTER TABLE tblcdcliente OWNER TO postgres;
GRANT ALL ON TABLE tblcdcliente TO postgres;
GRANT ALL ON TABLE tblcdcliente TO public;
e os HBM…
<hibernate-mapping package="com.atual.modelo.cadastro.cadastrogeral">
<class name="CadastroGeral" table="tblCDGeral" lazy="true">
<composite-id
class="com.atual.modelo.cadastro.cadastrogeral.CadastroGeralPk" name="idComposto">
<key-property column="Cod_cadastro" name="codCadastro"
type="integer" />
<key-many-to-one
class="com.atual.modelo.customizacao.tipocadastro.TipoCadastro"
column="Tipo_cadastro" foreign-key="FK_CMTipoCadastro_CDGeral" lazy="false"
name="tipoCadastro" />
</composite-id>
<many-to-one class="com.atual.modelo.customizacao.empresa.Empresa"
column="Cod_empresa" foreign-key="FK_CMEmpresa_CDGeral" lazy="false"
name="codEmpresa" not-null="false" />
<one-to-one name="cliente" ></one-to-one>
<many-to-one class="com.atual.modelo.cadastro.area.Area"
column="Cod_area" foreign-key="FK_CDArea_CDGeral" lazy="false" name="codArea"
not-null="false" />
<property column="Nome_cadastro" generated="never" lazy="false"
length="50" name="nomeCadastro" type="string" />
<property column="Apelido" generated="never" lazy="false"
length="30" name="apelido" type="string" />
<many-to-one class="com.atual.modelo.cadastro.condpgto.CondPgto"
column="Cod_cond_pgto" foreign-key="FK_CDCondicaoPgto_CDGeral" lazy="false"
name="codCondPgto" not-null="false" />
<property column="Tipo_FJ" generated="never" lazy="false"
length="1" name="tipoFj" type="string" />
<property column="Cpf_Cnpj" generated="never" lazy="false"
length="18" name="cpfCnpj" type="string" />
<property column="RG_IE" generated="never" lazy="false"
length="14" name="rgIe" type="string" />
<property column="Data_cadastro" generated="never" lazy="false"
length="23" name="dataCadastro" type="timestamp" />
<many-to-one class="com.atual.modelo.cadastro.situacao.Situacao"
column="Cod_situacao" foreign-key="FK_CDSituacao_CDGeral" lazy="false"
name="codSituacao" not-null="false" />
<many-to-one class="com.atual.modelo.cadastro.ramo.Ramo"
column="Cod_ramo" foreign-key="FK_CDRamo_CDGeral" lazy="false" name="codRamo"
not-null="false" />
<property column="Data_alteracao" generated="never" lazy="false"
length="23" name="dataAlteracao" type="timestamp" />
<many-to-one class="com.atual.modelo.cadastro.estado.Estado"
column="Uf" foreign-key="FK_CDEstado_CDGeral" lazy="false" name="uf"
not-null="false" />
<many-to-one class="com.atual.modelo.cadastro.categoria.Categoria"
column="Cod_categoria" foreign-key="FK_CDCategoria_CDGeral" lazy="false"
name="codCategoria" not-null="false" />
<many-to-one class="com.atual.modelo.cadastro.formaaprovacao.FormaAprovacao"
column="Cod_forma_aprovacao" foreign-key="FK_CDFormaAprovacao_CDGeral"
lazy="false" name="codFormaAprovacao" not-null="false" />
<property column="Observacao" generated="never" lazy="false"
length="100" name="observacao" type="string" />
<property column="Isuframa" generated="never" lazy="false"
length="9" name="isuframa" type="string" />
<many-to-one class="com.atual.modelo.cadastro.rota.Rota"
column="Cod_rota" foreign-key="FK_CDRota_CDGeral" lazy="false" name="codRota"
not-null="false" />
<property column="Ordem_rota" generated="never" lazy="false"
length="10" name="ordemRota" type="integer" />
<property column="Distancia" generated="never" lazy="false"
length="10" name="distancia" type="integer" />
<bag name="listaEnderecos" table="tblCDEndereco" inverse="true"
fetch="select" cascade="all-delete-orphan" lazy="false" order-by="Tipo_endereco">
<key update="false" foreign-key="fk_tblcdgeral_tblcdendereco">
<column name="Cod_cadastro"></column>
<column name="Tipo_cadastro"></column>
</key>
<one-to-many class="Endereco" />
</bag>
</class>
<hibernate-mapping package="com.atual.modelo.cadastro.cadastrogeral">
<class name="Cliente" table="tblCDCliente">
<!--
<composite-id name="idComposto" class="ClientePk"> <key-many-to-one
name="cadGeral"
class="com.atual.modelo.cadastro.cadastrogeral.CadastroGeral"
foreign-key="FK_tblCDGeral_tblCDCliente" lazy="false"> <column
name="Cod_cadastro"></column> <column name="Tipo_cadastro"></column>
</key-many-to-one> </composite-id>
-->
<id>
<generator class="foreign" >
<param name="Cod_cadastro"></param>
<param name="Tipo_cadastro"></param>
</generator>
</id>
<many-to-one name="codLista" column="Cod_lista"
class="com.atual.modelo.estoque.listapreco.ListaPreco" not-null="false"
lazy="false" foreign-key="FK_CEListaPreco_CDCliente">
</many-to-one>
<property name="percDesconto" type="big_decimal" not-null="false"
precision="5" scale="2">
<column name="Perc_desconto" sql-type="decimal(5,2)"></column>
</property>
<property name="limiteCredito" type="big_decimal" not-null="false"
precision="15" scale="2">
<column name="Limite_credito" sql-type="decimal(15,2)"></column>
</property>
<many-to-one name="codVendedor"
class="com.atual.modelo.cadastro.cadastrogeral.CadastroGeral"
foreign-key="FK_tblCDVendedor_tblCDCliente" not-null="false">
<column name="Cod_vendedor"></column>
<column name="Tipo_vendedor"></column>
</many-to-one>
<many-to-one name="codBancoCaixa"
class="com.atual.modelo.financeiro.bancocaixa.BancoCaixa"
foreign-key="FK_CBBancoCaixa_CDCliente" column="Cod_banco_caixa"
not-null="false" lazy="false">
</many-to-one>
<many-to-one name="codFormaCob"
class="com.atual.modelo.financeiro.formacob.FormaCob" foreign-key="FK_tblCBFormaCob_tblCDCliente"
column="Cod_forma_cob" not-null="false" lazy="false">
</many-to-one>
<property name="dataAberturaFirma" column="Data_abertura_firma"
type="com.atual.datamodel.util.tipos.DataFlex" not-null="false" />
<property name="dataAltContrato" column="Data_alt_contrato"
type="com.atual.datamodel.util.tipos.DataFlex" not-null="false" />
<property name="qtdeFuncionario" column="Qtde_funcionario"
type="integer" not-null="false" />
<property name="faturamentoMes" type="big_decimal" not-null="false"
precision="15" scale="2">
<column name="Faturamento_mes" sql-type="decimal(15,2)"></column>
</property>
<property name="capitalSocialInteg" type="big_decimal"
not-null="false" precision="15" scale="2">
<column name="Capital_social_integ" sql-type="decimal(15,2)"></column>
</property>
<property name="imovelProprio" column="Imovel_proprio" type="string"
length="1" not-null="false" />
<many-to-one name="codGrupoEmpresa"
class="com.atual.modelo.cadastro.grupoempresa.GrupoEmpresa"
foreign-key="FK_CDGrupoEmpresa_CDCliente" column="Cod_grupo_empresa"
not-null="false" lazy="false">
</many-to-one>
<many-to-one name="codAnaliseCredito"
class="com.atual.modelo.cadastro.analisecredito.AnaliseCredito"
foreign-key="FK_CDAnaliseCredito_CDCliente" column="Cod_analise_credito"
not-null="false" lazy="false">
</many-to-one>
<property name="prazoMedioMax" column="Prazo_medio_max" type="integer"
not-null="false" />
<property name="atrasoMax" column="Prazo_atraso_max" type="integer"
not-null="false" />
<property name="dataRenovacaoCredito" column="data_renova_credito"
type="com.atual.datamodel.util.tipos.DataFlex" not-null="false" />
<many-to-one name="codTransportadora1"
class="com.atual.modelo.cadastro.cadastrogeral.CadastroGeral"
foreign-key="FK_CDGeralT1_CDCliente" not-null="false">
<column name="Cod_transportadora1"></column>
<column name="Tipo_cadastro_transp1"></column>
</many-to-one>
<many-to-one name="codTransportadora2"
class="com.atual.modelo.cadastro.cadastrogeral.CadastroGeral"
foreign-key="FK_CDGeralT2_CDCliente" not-null="false">
<column name="Cod_transportadora2"></column>
<column name="Tipo_cadastro_transp2"></column>
</many-to-one>
</class>
gostaria de maperar 1 CadastroGeral para 1 Cliente… não tenho idéia de como mapear…