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.