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.

Reply via email to