Do we have further update on this? How to supper optimistic locking On Friday, April 17, 2015 at 8:43:01 AM UTC-4, Stéphane Schild wrote: > > Hi, > > Does anyone have a response on this topic? I have exactly the same problem > and need clarifications to be able to make a choice between Neo4J and > others databases. > > Thank you very much ! > > Stéphane Schild > > Le mercredi 25 février 2015 08:51:17 UTC+1, Denis Moret a écrit : >> >> Hi, >> >> Regarding Michael Hunger response >> <https://groups.google.com/d/msg/neo4j/5IbORTqPaQs/CFKLfT3gFVQJ> and >> using >> >> Spring data neo4j 3.3.0.M1 >> Spring 4.1.4 >> Neo4j 2.16 >> Java 1.7 >> >> I've tried to use the advance mapping to have the optimistic locking >> working without success. >> >> My source is something like: >> >> public void updateMainChannel(String channelId, String shortName) { >> Transaction tx = graphDatabase.beginTx(); >> try { >> Channel c = channelService.findChannelById(channelId); >> //c = c.persist(); // this line makes no difference >> c.setShortName(shortName); >> channelService.saveChannel(c); >> tx.success(); >> } catch (Exception ex) { >> tx.failure(); >> } finally { >> tx.close(); >> } >> } >> >> >> @Transactional >> public class ChannelServiceImpl implements ChannelService{ >> >> @Autowired >> private ChannelRepository channelRepository; >> >> public Channel findChannelById(String id){ >> return channelRepository.findById(id); >> } >> >> public Channel saveChannel(Channel channel){ >> return channelRepository.save(channel); >> } >> } >> >> >> >> >> @Repository >> public interface ChannelRepository extends GraphRepository<Channel> { >> public Channel findById(String id); >> } >> >> What I tried is: >> >> - client A calls the method updateChannel and get paused (debug mode and >> breakpoint) right after fetching the channel using the channelService >> - client B calls the method updateChannel without being stopped to update >> the same channel as client A >> - client A continues >> >> The result is right after client B has updated the channel, client B's >> value are saved in the database. But once client A finishes, its values are >> saved. >> >> I was expected an exception telling that the entity was modified since it >> was last fetched. >> >> Did I do something wrong or am I expecting too much ? >> >> I noticed that the Channel entity returned by the "findChannelById" >> method has a "DetachedEntityState", does it mean that the entity is >> detached ? I ask this because event if the name is explicit, this class has >> a isDetached() method which made me think that a DetachedEntityState can be >> attached. Finally I tried to "attach" it using persist() on it but it does >> not have any effect. >> >> Thanks in advance, >> >> Denis >> >>
-- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
