openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "CASERO Jaime" <JCas...@covansys.com>
Subject RE: Exception in thread "main" java.lang.StackOverflowError
Date Fri, 05 Oct 2007 14:32:41 GMT
I think your problem is due the recursive nature of the data structure
you are trying to model. Correct if I'm wrong, but "Tabela" is the
classical "Tree". I have already used this kind of structures with
openjpa, and the depth of the tree, is limited by the Java stack.

-----Original Message-----
From: ricardo.leoneti@bol.com.br [mailto:ricardo.leoneti@bol.com.br] 
Sent: Friday, October 05, 2007 3:45 PM
To: users
Subject: Re:Exception in thread "main" java.lang.StackOverflowError

Sorry,

Here the source code.
Please help me.


Teste.java
========================================================================
====
import java.util.Iterator;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

public class Teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		EntityManagerFactory emf;
		emf = Persistence.createEntityManagerFactory("default",
System
				.getProperties());
		EntityManager em = (EntityManager)
emf.createEntityManager();
		EntityTransaction transaction = em.getTransaction();

		transaction.begin();
		for (int x = 0; x < 1000; x++) {
			em.persist(new Tabela(x, "Id " + x));
		}
		transaction.commit();

		
		transaction.begin();
		List l = (List<Tabela>) em.createQuery("SELECT a FROM
Tabela a")
				.getResultList();
		Iterator i = l.iterator();
		while (i.hasNext()) {
			Tabela tb = (Tabela) i.next();
			System.out.println(tb);
		}
		transaction.commit();

	}

}
========================================================================
====


Tabela.java
========================================================================
====

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.apache.openjpa.persistence.InverseLogical;

@Entity
public class Tabela implements Serializable {

	private static final long serialVersionUID =
-7323896668494281866L;

	@Id
	private int id;

	private String ds;

	@ManyToOne(cascade = CascadeType.REFRESH)
	@JoinColumn(name = "pai", nullable = true)
	private Tabela pai;

	@OneToMany(cascade = CascadeType.REFRESH, mappedBy = "pai")
	@InverseLogical("pai")
	private List<Tabela> filhos;
	
	public Tabela(int i, String x) {
		id = i;
		ds = x;
	}

	public String getDs() {
		return ds;
	}

	public void setDs(String ds) {
		this.ds = ds;
	}

	public int getId() {
		return id;
	}

	public void setId(int a) {
		this.id = a;
	}

	public Tabela() {
		super();
	}

	public String toString() {
		return "" + id + " " + ds;
	}

	public List<Tabela> getFilhos() {
		return filhos;
	}

	public void setFilhos(List<Tabela> filhos) {
		this.filhos = filhos;
	}

	public Tabela getPai() {
		return pai;
	}

	public void setPai(Tabela pai) {
		this.pai = pai;
	}

}
========================================================================
====


tnks
[]s


---------- In?cio da mensagem original -----------

      De: ricardo.leoneti@bol.com.br
    Para: "users" users@openjpa.apache.org
      Cc: "dev" dev@openjpa.apache.org
    Data: Tue,  2 Oct 2007 20:28:44 -0300
 Assunto: Exception in thread "main" java.lang.StackOverflowError

> Guys,
> 
> I do a simple teste and I found that error:
> Exception in thread "main" java.lang.StackOverflowError
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at
org.apache.openjpa.enhance.Reflection.getDeclaredField(Reflection.java:1
66)
> :
> :
> 
> The error occurrs in the last commit "transaction.commit();" at line
36.
> 
> 
> 
>
 
Confidentiality Statement:
 
This message is intended only for the individual or entity to which it is addressed. It may
contain privileged, confidential information which is exempt from disclosure under applicable
laws. If you are not the intended recipient, please note that you are strictly prohibited
from disseminating or distributing this information (other than to the intended recipient)
or copying this information. If you have received this communication in error, please notify
us immediately by return email.
-----------------------------

Mime
View raw message