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.

Reply via email to