Hibernate All subclasses must also have proxies

6 respostas
kaoe

Ola pessoal

To tentando usar o hibernate (v. 2.1.8 ) e estou recendo este erro ai. Todas as classes foram criadas automaticamente com a ferramente dele (org.hibernate.tool.hbm2java.CodeGenerator) eu não achei nada sobre este erro.

Alguém pode me ajudar?

Caused by: net.sf.hibernate.MappingException: All subclasses must also have proxies: com.netabc.model.Cliente

at net.sf.hibernate.persister.AbstractEntityPersister.(AbstractEntityPersister.java:807)

at net.sf.hibernate.persister.EntityPersister.(EntityPersister.java:690)

at net.sf.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:42)

at net.sf.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:137)

at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:805)

at com.netabc.hibernate.HibernateUtil.(HibernateUtil.java:21)

6 Respostas

ricardolecheta

All subclasses must also have proxies: >>>com.netabc.model.Cliente

coloque os hbm.xml aqui… mas a mensagem me parece bem explicativa…

kaoe

É que realmente nunca usei o hibernate, o que seria este proxy que le menciona?

No proximo tópico coloco o hbm.xml

kaoe

Aqui esta…!! Eu estou usando um arquivo unico chamado model.hbm.xml.

<?xml version="1.0" encoding="UTF-8"?>
<id name="id" column="id_editora" type="long">
	<generator class="identity"/>
</id>

<property name="cnpj" length="14" type="string"/>
<property name="ie" length="20" type="string"/>
<property name="razaoSocial" length="150" type="string"/>
<id name="id" column="id_funcionario" type="integer">
	<generator class="identity"/>
</id>

<property name="nome" length="150" type="string" not-null="true" index="nome_idx"/>
<property name="cargo" length="150" type="string" not-null="true"/>

<component name="comercial" class="com.netabc.model.Telefone">
	<property name="ddd" column="ddd_comercial" length="2" type="string" not-null="true"/>
	<property name="numero" column="numero_comercial" length="20" type="string" not-null="true"/>
	<property name="ramal" length="10" column="ramal_comercial" type="string" not-null="true"/>
</component>

<component name="celular" class="com.netabc.model.Telefone">
	<property name="ddd" column="ddd_celular" length="2" type="string" not-null="true"/>
	<property name="numero" column="numero_celular" length="20" type="string" not-null="true"/>
	<property name="ramal" length="10" column="ramal_celular" type="string"/>
</component>

<component name="residencial" class="com.netabc.model.Telefone">
	<property name="ddd" column="ddd_residencial" length="2" type="string" not-null="true"/>
	<property name="numero" column="numero_residencial" length="20" type="string" not-null="true"/>
	<property name="ramal" length="10" column="ramal_residencial" type="string" not-null="true"/>
</component>
	
<property name="email" length="255" type="string" not-null="true" unique="true"/>
<property name="cpf" length="11" type="string"/>
<property name="rg" length="30" type="string"/>

<many-to-one name="editora" class="com.netabc.model.Editora" column="id_editora" cascade="all"/>

<many-to-one name="departamento" class="com.netabc.model.Departamento" column="id_departamento"/>
<id name="id" column="id_departamento" type="integer">
	<generator class="identity"/>
</id>

<property name="nome" length="100" type="string" not-null="true" index="nome_idx"/>

<bag name="funcionarios" order-by="nome">
	<key column="id_departamento"/>
	<one-to-many class="Funcionario"/>
</bag>
<id name="id" column="id_cliente" type="long">
    <generator class="identity"/>
</id>

<discriminator column="tipo" length="1" type="string"/>

<property name="nome" length="150" type="string" not-null="true" index="nome_idx"/>
<property name="abreviacao" length="30" type="string" not-null="true"/>

<bag name="enderecos" order-by="tipo">
<key column="id_cliente"/>
<one-to-many class="com.netabc.model.Endereco"/>
</bag>

<many-to-one name="contatoPadrao" class="com.netabc.model.Contato" column="contatoPadrao" not-null="true"/>

<bag name="contatos" order-by="nome">
	<key column="id_cliente"/>
<one-to-many class="com.netabc.model.Contato"/>
</bag>

<bag name="produtos" order-by="descricao">
	<key column="id_cliente"/>
<one-to-many class="com.netabc.model.Produto"/>
</bag>

<subclass name="PessoaFisica" discriminator-value="F">
<property name="cpf" length="11" type="string" index="cpf_idx"/>
</subclass>

<subclass name="PessoaJuridica" discriminator-value="J">
<property name="cnpj" length="14" type="string" index="cnpj_idx"/>
<property name="ie" length="20" type="string"/>
<property name="razaoSocial" length="150" type="string" index="razaosocial_idx"/>
<property name="site" length="255" type="string"/>
</subclass>
<id name="id" column="id_endereco" type="long">
	<generator class="identity"/>
</id>

<many-to-one name="tipo" class="com.netabc.model.TipoEndereco" column="tipo" not-null="true"/>

<property name="endereco" length="255" type="string" not-null="true"/>
<property name="bairro" length="150" type="string" not-null="true"/>
<property name="cidade" length="200" type="string" not-null="true"/>
<property name="estado" length="2" type="string" not-null="true"/>
<property name="cep" length="8" type="string" not-null="true"/>

<many-to-one name="cliente" class="com.netabc.model.Cliente" column="id_cliente" cascade="all"/>
<id name="tipo" column="tipo_endereco" type="string" length="2">
	<generator class="assigned"/>
</id>

<property name="descricao" length="40" type="string" not-null="true" index="descricao_idx"/>
<id name="id" column="id_contato" type="long">
	<generator class="identity"/>
</id>

<property name="nome" length="150" type="string" not-null="true" index="nome_idx"/>
<property name="departamento" length="150" type="string" not-null="true"/>

<component name="comercial" class="com.netabc.model.Telefone">
	<property name="ddd" column="ddd_comercial" length="2" type="string" not-null="true"/>
	<property name="numero" column="numero_comercial" length="20" type="string" not-null="true"/>
	<property name="ramal" length="10" column="ramal_comercial" type="string" not-null="true"/>
</component>

<component name="celular" class="com.netabc.model.Telefone">
	<property name="ddd" column="ddd_celular" length="2" type="string" not-null="true"/>
	<property name="numero" column="numero_celular" length="20" type="string" not-null="true"/>
	<property name="ramal" length="10" column="ramal_celular" type="string"/>
</component>

<component name="fax" class="com.netabc.model.Telefone">
	<property name="ddd" column="ddd_fax" length="2" type="string" not-null="true"/>
	<property name="numero" column="numero_fax" length="20" type="string" not-null="true"/>
	<property name="ramal" length="10" column="ramal_fax" type="string" not-null="true"/>
</component>
	
<property name="email" length="255" type="string" index="email_idx"/>
<property name="cpf" length="11" type="string"/>
<property name="rg" length="30" type="string"/>

<many-to-one name="cliente" class="com.netabc.model.Cliente" column="id_cliente" cascade="all" not-null="true"/>
<id name="id" column="id_produto" type="integer">
	<generator class="identity"/>
</id>

<property name="descricao" length="150" type="string" not-null="true" index="descricao_idx"/>
<property name="abreviacao" length="20" type="string"/>

<many-to-one name="cliente" class="com.netabc.model.Cliente" column="id_cliente" not-null="true"/>
<id name="id" column="id_midia" type="integer">
	<generator class="identity"/>
</id>

<discriminator column="tipo" length="1" type="string"/>

<property name="descricao" length="40" type="string" not-null="true" unique="true"/>

<bag name="anuncios" order-by="titulo">
	<key column="id_midia"/>
	<one-to-many class="com.netabc.model.Anuncio"/>
</bag>

<subclass name="Revista" discriminator-value="R">
	<bag name="edicoes" order-by="data desc">
		<key column="id_midia"/>
		<one-to-many class="Edicao"/>
	</bag>
</subclass>
<composite-id name="id" class="com.netabc.model.NumeroEdicao">
	<key-many-to-one name="midia" class="com.netabc.model.Midia" column="id_midia"/>
            <key-property name="edicao" type="integer" column="edicao"/>
</composite-id>

<property name="data" type="date" not-null="true"/>
<id name="id" column="id_segmento" type="integer">
	<generator class="identity"/>
</id>

<property name="descricao" length="40" type="string" not-null="true"/>
<id name="id" column="id_anuncio" type="integer">
	<generator class="identity"/>
</id>

<property name="titulo" length="40" type="string" not-null="true" index="titulo_idx"/>
<property name="abreviacao" length="20" type="string"/>
<property name="valor" type="double" not-null="true"/>
<property name="descricao" length="255" type="string"/>

<many-to-one name="midia" class="com.netabc.model.Midia" column="id_midia" not-null="true"/>
ricardolecheta

kaoe:
É que realmente nunca usei o hibernate, o que seria este proxy que le menciona?

No proximo tópico coloco o hbm.xml

pra quem nunca usou o hibernate os xml’s estao bem grandes hehe

o proxy é o lazy=true. Tente fazer lazy=true onde em <subclass …>

kaoe

Blz. Vou testar. É que penso melhor com sistemas completos, como os problemas acontecem todos juntos não tenho surpresas depois… hehehehe

Valeu

kaoe

Valeu, funcionou direitinho.
E agora que sabia pelo que procurar, achei a parte da documentação que fala dos proxys e entendi o lazy.

Abraços.

Criado 2 de fevereiro de 2005
Ultima resposta 3 de fev. de 2005
Respostas 6
Participantes 2