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