Relacionamento - Hibernate

4 respostas
F

Estou fazendo um projeto onde utiliza hibernate com xml’s.

arquivo xml da tabela [color=blue]transacao[/color]

<hibernate-mapping>
    <class name="Transacao" table="TRANSACAO">
        <id name="idtransacao" type="java.lang.Integer">
            <column name="IDTRANSACAO" precision="3" scale="0" />
            <generator class="increment"></generator>
        </id>
        <property name="notransacao" type="string">
            <column name="NOTRANSACAO" length="60" />
        </property>
        <property name="nopaginaweb" type="string">
            <column name="NOPAGINAWEB" length="60" />
        </property>
        <set name="transusrs" inverse="true">
            <key>
                <column name="IDTRANSACAO" precision="3" scale="0" />
            </key>
            <one-to-many class="Transusr" />
        </set>
    </class>
</hibernate-mapping>

arquivo xml da tabela [color=blue]Transusr[/color]

<hibernate-mapping>
    <class name="Transusr" table="TRANSUSR" >
        <id name="idtransusr" type="java.lang.Integer">
            <column name="IDTRANSUSR" precision="6" scale="0" />
            <generator class="increment"></generator>
        </id>
        <many-to-one name="transacao" class="Transacao" fetch="select" >
            <column name="IDTRANSACAO" precision="3" scale="0" />
        </many-to-one>
        <many-to-one name="usuario" class="Usuario" fetch="select">
            <column name="IDUSUARIO" precision="3" scale="0" />
        </many-to-one>
    </class>
</hibernate-mapping>

arquivo xml da tabela [color=blue]Usuario[/color]

<hibernate-mapping>
    <class name="Usuario" table="USUARIO">
        <id name="idusuario" type="java.lang.Integer">
            <column name="IDUSUARIO" precision="3" scale="0" />
            <generator class="increment"></generator>
        </id>
        <property name="login" type="string">
            <column name="LOGIN" length="15" not-null="true" unique="true" />
        </property>
        <property name="senha" type="string">
            <column name="SENHA" length="30" />
        </property>
        <property name="nousuario" type="string">
            <column name="NOUSUARIO" length="60" />
        </property>
        <property name="cpf" type="java.lang.Long">
            <column name="CPF" precision="11" scale="0" />
        </property>
        <property name="flgativo" type="java.lang.String">
            <column name="FLGATIVO" length="1" />
        </property>
        <property name="expprocacesso" type="java.lang.String">
            <column name="EXPPROCACESSO" length="1" />
        </property>
        <set name="transusrs" inverse="true" cascade="all">
            <key>
                <column name="IDUSUARIO" precision="3" scale="0" />
            </key>
            <one-to-many class="Transusr" />
        </set>
    </class>
</hibernate-mapping>

Eu tenho o método que me retorna as transações:

public List getMenu(Usuario user) {
		List menu = null;
		Session session = HibernateUtil.getCurrentSession();
		Criteria criteria = session.createCriteria(Transacao.class);
		menu = criteria.list();
		HibernateUtil.closeSession();
		return menu;
	}

O problema eh que ele está retornando todos os id’s (registros) da tabela transação, o ideal seria ele fazer o relacionamento com a tabela [color=blue]Transusr[/color] e assim retornando somente os registros que tem o relacionamento. Alguém sabe o que está errado?

4 Respostas

J
public List getMenu(Usuario user) {

List menu = null;

Session session = HibernateUtil.getCurrentSession();

Criteria criteria = session.createCriteria(Transacao.class);

//Está faltando a restrição. Acrescente a restrição

criteria.add(Restrictions.eq(“xxx”)

onde XXX= restrição.

menu = criteria.list();   
HibernateUtil.closeSession();   
return menu;

}

F

Olá Jean, em primeiro lugar obrigado pela resposta.

criteria.add(Restrictions.eq("xxx") )

Isso seria uma coluna do meu arquivo xml? Eu não entendi?

No caso do meu arquivo Transacao eu tenho o mapeamento “”, eu colocaria essa coluna?

L

FoxMurder,

Será que não está faltando vc colocar o atributo lazy no seu mapeamento no arquivo XML ?

[]'ss!!!

J

Vc deve colocara a coluna do xml e o di referente ao objeto:

Ex.: criteria.add(Restrictions.eq(“comunidade.idComunidade”, comunidadeAcao.getComunidade().getIdComunidade()));

Criado 18 de novembro de 2008
Ultima resposta 18 de nov. de 2008
Respostas 4
Participantes 3