SDN(4.2.0.M1
)とneo4j-ogm(2.0.5
)のバージョンを最新のスナップショット4.2.0.BUILD-SNAPSHOT
と2.1.0-SNAPSHOT
にアップグレードしようとしています。4.2へのSDN移行:@Transactionalはどのように機能しますか?
他のSOの質問からのアドバイスといくつかのアドバイスを受けて、neo4j セッションと対話するすべてのメソッドを@Transactional
にラップしました。ほとんどのケースでうまくいきますが、まだ理解できない例外がいくつかあります(Transaction is not current for this thread
)。
私が例挙げてみましょう:それはSDNと直接使う対話するだけだから、
@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());
}
}
}
ここ
私だけ@Transaction
addContact
方法で注釈を付けてきたが、少なくともこの私の考え:)
しかし、単にリストを反復し、注釈付きaddContact
メソッドを呼び出すaddContacts
メソッドを呼び出すと、前述の例外が発生して失敗します。私もこの方法に注釈をつけても、うまくいきますが、なぜそれが理解できません。たぶん私は春についてのいくつかの基本が不足している@Transactional
注釈の動作、それはごめんなさい脳のない質問です。
誰も私が両方の方法に注釈を付ける必要があることを明確にすることはできますか? 事前に感謝します
詳細を追加する必要がある場合は、コメントを追加し、私は私の答えを拡大します。 – digx1
ありがとう@ digx1!問題を尋ねる前にもう少し調べたことがありますが、問題がSDNの移行に関連する可能性があることは当然のことでした。私の誤り:)両方のリンクに感謝します。 – troig