Thanks Tristan, I made the proper code adjustments, but unfortunately JDO is not aware of the Entity relationship.
Is there a certain way I can use to make JDO consistent with low level API keys ? On Jun 13, 4:08 pm, Tristan <tristan.slomin...@gmail.com> wrote: > It's possible to do anything in low-level API :) > > Although your code wouldn't work because you don't have question key > available, and you need to include transaction parameter in your puts. > > It would need to be something like > > Transaction txn = dataStore.beginTransaction(); > Key key = dataStore.put(txn, question); > Entity a1 = new Entity("Answer", key); > Entity a2 = new Entity("Answer", key); > dataStore.put(txn, a1); > dataStore.put(txn, a2); > txn.commit(); > > But it would probably make more sense to combine the answer puts: > > Transaction txn = dataStore.beginTransaction(); > Key key = dataStore.put(txn, question); > Entity a1 = new Entity("Answer", key); > Entity a2 = new Entity("Answer", key); > List<Entity> as = new ArrayList<Entity>(2); > as.add(a1); > as.add(a2); > dataStore.put(txn, as); > txn.commit(); > > On top of that, if you know what the keys should be, (if you're naming > them with strings), then you could probably do it more efficiently > with one put > > Key questionKey = KeyFactory.createKey("Question", "question1"); > Key answer1Key = KeyFactory.createKey(questionKey, "Answer", > "answer1"); > Key answer2Key = KeyFactory.createKey(questionKey, "Answer", > "answer2"); > Entity question = new Entity(questionKey); > Entity answer1 = new Entity(answer1Key); > Entity answer2 = new Entity(answer2Key); > List<Entity> entities = new ArrayList<Entity>(3); > entities.add(question); > entities.add(answer1); > entities.add(answer2); > Transaction txn = dataStore.beginTransaction(); > dataStore.put(txn, entities); > txn.commit(); > > The other thing you need to make sure is that JDO understands low- > level API keys and relationships that you code and that persistance > manager doesn't rewrite them in some way. (I don't know an answer to > that). > > Cheers. > > On Jun 12, 11:03 am, luka <uluk...@gmail.com> wrote: > > > Hi, > > > My application is currently using JDO, although for some stress > > testing > > I am trying to employ batch insert using low level API (since it is > > less practical to do it with JDO). > > > I have JDO parent-child one to many model which I am trying to insert > > using the low level API "Entity" model. > > So far I have succeeded to batch insert the entities although failed > > in making the relationship. > > > Is it possible to accomplish a parent-child one to many relationship > > using Entity API ? > > > Short Example: > > ------------------- > > // One Question has Many Answers > > > @PersistenceCapable (detachable = "true") > > public class Question implements Serializable { > > > �...@primarykey > > @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) > > @Extension(vendorName="datanucleus", key="gae.encoded-pk", > > value="true") > > private String key; > > > �...@persistent(mappedBy = "question") > > @Element(dependent = "true") > > private List<Answer> answers; > > > ...... > > > } > > > @PersistenceCapable (detachable = "true") > > public class Answer implements Serializable { > > > @PrimaryKey > > @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) > > @Extension(vendorName="datanucleus", key="gae.encoded-pk", > > value="true") > > private String key; > > > �...@persistent > > private Question question; > > > .... > > > } > > > // Using low level API > > > Entity question = new Entity("Question"); > > > Entity a1 = new Entity("Answer",question.getKey()); > > .... > > Entity a2 = new Entity("Answer",question.getKey()); > > ... > > > DatastoreService dataStore = > > DatastoreServiceFactory.getDatastoreService(); > > Transaction txn = dataStore.beginTransaction(); > > dataStore.put(question); > > dataStore.put(a1); > > dataStore.put(a2); > > txn.commit(); > > > //END > > > Thanks > > Luka -- 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.