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 <[email protected]>
> 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 <[email protected]>
>
>> 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 <[email protected]> <[email protected]>
>> 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
>> [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<google-appengine-java%[email protected]>
>> .
>> 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
> [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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
> [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine-java%[email protected]>
> .
> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.