I'm trying to upgrade versions of SDN (4.2.0.M1) and neo4j-ogm (2.0.5) to the latest snapshots 4.2.0.BUILD-SNAPSHOT and 2.1.0-SNAPSHOT.
Following the migration guide and some advises from other SO questions, I've wrapped all methods that interact with neo4j session with @Transactional. It's working fine with most of the cases, but there still are some exceptions (Transaction is not current for this thread) that I cannot understand.
Let me give an example:
@Service
public class ContactServiceImpl implements ContactService {
    @Inject
    private Session session;
    //...
    @Override
    @Transactional
    public void addContact(String userId, String contactId) {
        Contact contact = new Contact();
        // Fill contact data
        session.save(contact);
    }
    @Override
    public void addContacts(String userId, Set<User> newContacts) {
        for (User contact : CollectionUtils.emptyIfNull(newContacts)) {
            addContact(userId, contact.getId());
        }
    }   
}
Here I've only annotated with @Transaction the addContact method, because It's the only one that interacts direcly with SDN, at least this was my thought :)
However, If I call the addContacts method, which simply iterates a list and call the annotated addContact method, It fails with the exception mentioned before. If I also annotate this method, it simply works well, but I don't understand why. Maybe I'm missing some basics about spring @Transactional annotation behaviour, so sorry if it's a brainless question.
Can anyone clarify why I need to annotate both methods? Thanks in advance