Hi Peter, Maybe your example was simplified just to show the error, but I have a couple of questions on the application logic that was posted...
o Why are you performing a transaction begin/commit when you are only reading data? If your access is read only with no intent on updates, then a transaction is overkill. o Why are you calling flush before the commit? A commit invocation has an implicit flush action, so there is no reason to call flush explicity (in this case anyway). o Is an em.clear() doable for your environment? This would detach all entities in the EM's persistence context upon invocation. o The openjpa.AutoDetach property probably pre-dates the JPA spec. Have you tried running without this property? Kevin On Tue, May 12, 2009 at 8:58 AM, Peter Henderson < peter.hender...@starjar.com> wrote: > Thanks for replying. > > > The stack trace is within Hessian (server side) > > > StandardWrapperValve[AccountsService]: PWC1406: Servlet.service() for > servlet AccountsService threw exception > java.lang.StackOverflowError > at > com.caucho.hessian.util.IdentityIntMap.get(IdentityIntMap.java:114) > at > com.caucho.hessian.io.Hessian2Output.addRef(Hessian2Output.java:1314) > at > com.caucho.hessian.io.JavaSerializer.writeObject(JavaSerializer.java:141) > at > com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:490) > at > com.caucho.hessian.io.JavaSerializer.writeObject(JavaSerializer.java:153) > at > com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:490) > at > com.caucho.hessian.io.JavaSerializer.writeObject(JavaSerializer.java:153) > at > com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:490) > . > . > . > > > Which seems to suggest it is recursively walking the object graph never > reaching the end. (and the object graph is very simple [1]) > > This could be related to dates, although I am not sure atm. > > > > > PS > I am using OpenJPA 1.2.1 on Java 1.6.0_13 on Ubuntu linux 64bit. > > > > > > > > > [1] My entity class > @Entity > @Table(name = "accounts") > @NamedQueries({ > @NamedQuery(name = "Account.findByParentAccountId", > query = "SELECT a FROM Account a WHERE a.parentAccountId = > :accountId"), > @NamedQuery(name = "Account.findRootAccountsByCategoryId", > query = "SELECT a FROM Account a WHERE a.accountCategoryId = > :accountCategoryId AND a.parentAccountId is null AND a.deletedOn is null") > > }) > @EntityListeners(AccountHelper.class) > public class Account > implements Serializable { > > @GeneratedValue(strategy = GenerationType.IDENTITY) > @Id > @Column(name = "account_id", nullable = false) > private Integer accountId; > > @Column(name = "account_type", nullable = false) > private int accountType; > > @Column(name = "name", nullable = false) > private String name; > > @Column(name = "full_name", nullable = false) > private String fullName; > > @Column(name = "description") > private String description; > > @Column(name = "manager", nullable = false) > private String manager; > > @Column(name = "tree_depth", nullable = false) > private int treeDepth; > > @Column(name = "balance", nullable = false, precision = 20, scale = 6) > private BigDecimal balance; > > @Column(name = "created_on") > @Temporal(TemporalType.TIMESTAMP) > private Date createdOn; > > @Column(name = "created_by") > private String createdBy; > > @Column(name = "deleted_on") > @Temporal(TemporalType.TIMESTAMP) > private Date deletedOn; > > @Column(name = "deleted_by") > private String deletedBy; > > @Column(name = "parent_account_id") > private Integer parentAccountId; > > @Column(name = "account_category_id") > private Integer accountCategoryId; > > @Column(name = "nominal_code") > private String nominalCode; > > ** snip getters/setters hashCode equals toString ** > } > > > > Rick Curtis wrote: > >> Peter - >> >> What kind of problems are you having? An exception or stack trace would be >> very helpful. >> >> -Rick >> >> Peter Henderson wrote: >> >>> ... >>> >>> If I don't manually call em.detach() I get lots of problems when hessian >>> tries to serialize the object for wire transfer. >>> >>> ... >>> >>> >> > > -- > Peter Henderson > Director Starjar Limited. > > Mobile: +44 (0) 778 233 8645 > Email: peter.hender...@starjar.com > Web: www.starjar.com > >