Hi Johan, try this code try{
cn2.getTransaction().begin(); cn2.persist(e); cn2.getTransaction().commit(); response.getWriter().write("ok"); } catch(Exception e){ cn2.getTransaction().rollback(); response.getWriter().write(e.getLocalizedMessage()); }finally{ cn2.close(); } I think this place an exception in persist method. []'s Diego 2010/2/9 Johan Vallejo <jvall...@vnperu.com> > Hi Diego > Yes, i try using Long and Key but with both i have the error > > > Log : > > javax.persistence.PersistenceException: Transaction is still active. You > should always close your transactions correctly using commit() or rollback(). > > > > > El 09/02/2010 01:06 p.m., Diego Osse Fernandes escribió: > > Hi Johan, > > you can use the Long as PK > > @Id > @GeneratedValue(strategy = GenerationType.IDENTITY) > Long id; > > > []'s > Diego > > 2010/2/9 Johan Vallejo <jvall...@vnperu.com> > >> Hi Jake, >> Now i have this error >> >> Log : >> >> javax.persistence.PersistenceException: Transaction is still active. You >> should always close your transactions correctly using commit() or rollback(). >> >> >> this is my code : >> >> EntityManager cn2 = >> emf.get().createEntityManager(); >> distritos dist2 = cn2.find(distritos.class, id); >> evento e = new evento(); >> e.setDistrito(dist2); >> Date fecha = new Date(); >> e.setFechaCreacion(fecha); >> try{ >> cn2.getTransaction().begin(); >> cn2.persist(e); >> cn2.getTransaction().commit(); >> response.getWriter().write("ok"); >> }finally{ >> cn2.close(); >> } >> >> Distrito : >> @Entity >> public class distritos implements Serializable { >> @Id >> @GeneratedValue(strategy = GenerationType.IDENTITY) >> @Extension (vendorName="datanucleus", key="gae.encoded-pk", >> value="true") >> Key id; >> >> --getter and setter-- >> >> >> El 08/02/2010 03:37 p.m., Jake escribió: >> >> Hello, >> >> The Google Datastore has four ways that you can store a Primary Key >> ID: String, Long, and two variations on Google's own Key object. If >> you want to create a parent/child relationship between two persisted >> objects (in your case, evento is the parent and distritos is the >> child), then you need to use Google's Key object as the primary ID. >> See: >> http://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.html#Keys >> "If the class is used as a "child" class in a relationship, the key >> field must be of a type capable of representing an entity group >> parent: either a Key instance, or a Key value encoded as a string." >> So, you have two options: >> >> 1. Change your Long id values to Key id values. >> 2. Instead of storing "private distritos distrito" directly in your >> evento object, store a reference to the id: "private Long distrito_id" >> >> Jake >> >> On Feb 6, 4:06 pm, chevelle <jvall...@vnperu.com> <jvall...@vnperu.com> >> wrote: >> >> >> Hi >> I am new in the list, in these days i am trying save data between two >> entity beans using JPA but without success, i am cheking the log nd >> says: >> >> Uncaught exception from servlet >> javax.persistence.PersistenceException: Error in meta-data >> forbeans.distritos.id: Cannot have a java.lang.Long primary key and be a >> child object (owning field is beans.evento.distrito). >> >> this is my servlet: >> Long id = >> Long.parseLong(request.getParameter("idDistrito")); >> response.setContentType("text/html"); >> EntityManager cn = emf.get().createEntityManager(); >> >> Query q = cn.createQuery("SELECT d FROM distritos d WHEREd.id = >> :codigo"); >> q.setParameter("codigo",id); >> distritos dist = (distritos) q.getSingleResult(); >> >> EntityManager cn2 = emf.get().createEntityManager(); >> cn2.getTransaction().begin(); >> >> evento e = new evento(); >> e.setDistrito(dist); >> Date fecha = new Date(); >> e.setFechaCreacion(fecha); >> >> try{ >> cn2.persist(e); >> response.getWriter().write("ok"); >> }finally{ >> cn2.getTransaction().commit(); >> cn2.close(); >> } >> >> this is my entity bean >> >> Evento: >> @Entity >> public class evento implements Serializable { >> @Id >> @GeneratedValue(strategy = GenerationType.IDENTITY) >> Long id; >> >> @Temporal(javax.persistence.TemporalType.DATE) >> private Date fechaCreacion; >> >> @JoinColumn >> @OneToMany(cascade = CascadeType.ALL) >> private distritos distrito; >> >> --getter and setter-- >> >> Distrito: >> @Entity >> public class distritos implements Serializable { >> @Id >> @GeneratedValue(strategy = GenerationType.IDENTITY) >> Long id; >> private String distrito; >> >> --getter and setter-- >> >> i hope anyone help me, Thank! >> >> Johan >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google App Engine for Java" group. >> To post to this group, send email to >> google-appengine-j...@googlegroups.com. >> To unsubscribe from this group, send email to >> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com> >> . >> For more options, visit this group at >> http://groups.google.com/group/google-appengine-java?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > To post to this group, send email to > google-appengine-j...@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine-java+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > To post to this group, send email to > google-appengine-j...@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.