openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig L Russell <Craig.Russ...@Sun.COM>
Subject Re: Exception in thread "main" java.lang.StackOverflowError
Date Fri, 05 Oct 2007 14:38:13 GMT
I don't see anything obviously wrong. Can you post the full stack trace?

Craig

On Oct 5, 2007, at 7:32 AM, CASERO Jaime wrote:

> 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.
> -----------------------------

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:Craig.Russell@sun.com
P.S. A good JDO? O, Gasp!


Mime
View raw message