[RESOLVIDO]Problema com joined-subclass - Hibernate

2 respostas
bcartaxo

Estou com probelmas ao utilizar a abordagem de tabela por classe do Hibernate. Tenho uma tabela para cada classe da hierarquia, sejam elas abstratas ou não. Na documentação do Hibernate oq encontrei eh que essa abordagem é mapeada usando-se , porem um erro está acontecendo quando tento recuperar um objeto do tipo da super classe. Segue o mapeamento do Hibernate e o erro que está aparendo:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="br.com.aaaaa.core.venda.Venda" table="vendas">
		<id name="codigo" column="codigo_venda">
			<generator class="native">
				<param name="sequence">codigo_venda_sequence</param>
			</generator>
		</id>

		<property name="dataRealizacao" column="data_realizacao" />

		<set name="itens" cascade="save-update">
			<key column="codigo_venda" />
			<one-to-many class="br.com.aaaaa.core.venda.ItemVenda" />
		</set>

		<!-- DECLARAÇÃO DE SUBCLASSE - Pedido -->
		<joined-subclass name="br.com.aaaaa.core.venda.Pedido" table="pedidos">
			<key column="codigo_pedido" />

			<many-to-one name="cliente"
				class="br.com.aaaaa.core.cliente.Cliente" not-null="true" />

			<property name="dataEntrega" column="data_entrega" not-null="true" />
		</joined-subclass>
	</class>
</hibernate-mapping>
Hibernate: 
    select
        produto0_.codigo_produto as codigo1_3_,
        produto0_1_.nome as nome3_,
        produto0_1_.preco as preco3_,
        produto0_1_.descricao as descricao3_,
        produto0_.codigo_tipo_produto as codigo2_4_ 
    from
        produtos produto0_ 
    inner join
        estocaveis produto0_1_ 
            on produto0_.codigo_produto=produto0_1_.codigo_estocavel
10/05/2008 22:54:18 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 0, SQLState: 42703
10/05/2008 22:54:18 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: ERROR: column venda0_1_.cliente does not exist
Hibernate: 
    select
        venda0_.codigo_venda as codigo1_18_,
        venda0_.data_realizacao as data2_18_,
        venda0_1_.cliente as cliente19_,
        venda0_1_.data_entrega as data3_19_,
        case 
            when venda0_1_.codigo_pedido is not null then 1 
            when venda0_.codigo_venda is not null then 0 
        end as clazz_ 
    from
        vendas venda0_ 
    left outer join
        pedidos venda0_1_ 
            on venda0_.codigo_venda=venda0_1_.codigo_pedido

Pelo que entendi do erro ele está reclamando pq a tablea de vendas não tem uma coluna cliente, mas o objeto venda n tem, quem tem eh o objeto pedido. O estranho é que com esse mapeamente consigo inserir objetos do tipo venda normalmente no banco, o problema reside somente na hora de obter. Alguém tem ideia do q pode ser?

Desde já agradeço.

2 Respostas

J

Ele está reclamando que a tabela pedidos não possui a coluna cliente

SEVERE: ERROR: column venda0_1_.cliente does not exist ... left outer join pedidos venda0_1_

venda0_1_ é um alias (apelido) para a tabela pedidos

bcartaxo

Putz kra… foi um detalhe q deixei passar mesmo. n espeficiquei no relacionamente de pedidos q a coluna deveria se chamar codigo_cliente, dai o hibernate deduziu q ela era cliente e n codigo_cliente. Vlw kra

Criado 10 de maio de 2008
Ultima resposta 10 de mai. de 2008
Respostas 2
Participantes 2