Hey,

I don't play with JPA too much, but I saw this:
http://www.datanucleus.org/products/datanucleus/jpa/transactions.html

Jake

On Feb 9, 10:55 am, Johan Vallejo <jvall...@vnperu.com> wrote:
> 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>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 for 
> beans.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 WHERE d.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.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to