Hibernate + Struts

0 respostas
F

Pessoal estou enfrentando um problema bem sério. Estou utilizando o Hibernate + Struts + Tomcat para uma aplicação web. Apesar de seguir com cuidado todas as recomendações do Hibernate Reference Documentation Version: 2.1.6, não estou conseguindo recuperar as informações do BD, para um mapeamento.
O mapeamento é um relacionamento de uma classe para ela mesma (Parent/Child), a gravação acontece com perfeição, respeitando corretamente a hierarquia dos objetos, mas para recuperar os dados, somente o objeto de nível mais alto é recuperado.

Listagem 1 - PersonChain.hbm.xml

<hibernate-mapping default-cascade="all">
<class name="br.com.cccp.personchain.PersonChain" table="personchain"> 
	<id name="id" type="string" unsaved-value="null">
		<column name="id" sql-type="char(32)" not-null="true"/>
		<generator class="uuid.hex"/>
	</id>
	<set name="dependents" lazy="true" inverse="true">
		<key column="master" />
		<one-to-many class="br.com.cccp.personchain.PersonChain" />
	</set>
	<many-to-one name="owner" column="master" class="br.com.cccp.personchain.PersonChain" />
	<property name="code" column="code" type="string" />
	<property name="nameCompany" column="name_company" type="string" />
	<property name="nameFantasy" column="name_fantasy" type="string" />
	<property name="cpfCnpj" column="cpf_cnpj" type="string" />	
	<property name="ie" column="ie" type="string" />
</class>
</hibernate-mapping>

Listagem 2 - Trecho do Servlet Action para recuperação

Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
String code = (String) request.getParameter("code");
PersonChain person = null;
Query query = session.createQuery("from PersonChain where code = :code");
query.setString("code", code);
Iterator persons = query.iterate();
if(persons.hasNext()) {
	person = (PersonChain) persons.next();			
}
request.setAttribute("personchain", person);	
tx.commit();
HibernateUtil.closeSession();			
return mapping.findForward("success");

Listagem 3 - Classe br.com.cccp.personchain.PersonChain

public class PersonChain {
	private String id;
	private String code;
	private String nameCompany;
	private String nameFantasy;
	private String ie;
	private String cpfCnpj;
	private Set dependents = new HashSet();
	private PersonChain owner = null;

	public String getId() {
		return this.id;
	}
	
	public void setId(String id) {
		this.id = id;
	}

	public PersonChain getOwner() {
		return this.owner;
	}
	
	public void setOwner(PersonChain owner) {
		this.owner = owner;
		if(this.owner != null) {
			this.owner.getDependents().add(this);
		}
	}
	
	public void addDependent(PersonChain dependent) {
		if(dependent != null) {
			dependent.setOwner(this);
		}
	}

	public Set getDependents() {
		return this.dependents;
	}
	
	public void setDependents(Set dependents) {
		this.dependents = dependents;
	}
	....
	getters e setter (sem maior importância)
	....
}

Bem, acredito que coloquei todas as informações para uma análise mais coerente, agradeço por qualquer ajuda.

Obrigado!

Criado 5 de setembro de 2004
Respostas 0
Participantes 1