Hello,
I'm currently testing some of Spring Data Graph features, and I have a few
questions about some usages.

Could someone explain to me how the following example works?
I run the following unit test:

@Test
public void testUpdatingEntitiesNotInTransaction(){
        Movie m = new Movie();
        m.setTitle("Leon");
        m.persist();
        Long id = m.getNodeId();
        Movie retrievedMovie = movieRepository.findOne(id);
        m.setTitle("Babel");
        m.persist();
        assertEquals("Leon", retrievedMovie.getTitle());

}

 And the assertion at the end fails, as retrievedMovie.getTitle() equals
"Babel" and not "Leon".
This point is not really clear in the documentation :
Does this occurs because of some cache? If so, is it the Neo4j cache? And
what is exactly its scope : thread, session, ...?
Or is any call to getters triggering an access to the database because of
AspectJ?

Anyway, unless I misundestood something, it's a bit confusing. Especially
when used to APIs like Hibernate, which don't make any refresh of retrieved
entities once we are outside of a transaction.

When I read this in documentation, I don't expect that any persist operation
affect other retrieved entities :
  Changing an attached entity inside a transaction will immediately write
through the changes to the datastore. Whenever an entity is changed outside
of a transaction it becomes detached. The changes are stored in the entity
itself until the next call to persist().

All entities returned by library functions are initially in an attached
state. Just as with any other entity, changing them outside of a transaction
detaches them, and they must be reattached with persist() for the data to be
saved.
 Maybe I have to precise some points :

   - I'm using Embedded database, with beforeTest cleaning
   - I don't use any transaction in this test.


Thanks by advance for your help!
Michel
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to