専用のDAOクラスでページ外のデータベーストランザクションを実行しようとしています。
この回答は少し役に立ちましたが、公式Webサイトの指示に従った後でも、トランザクションはまだコミットされていません。エラーが発生していません-挿入クエリが実行されていることはわかりますが、データベースにエントリが表示されません。
DAOクラスとインターフェイスは、@Match()
それらを見つけるために特定のパッケージに含まれている必要がありますか?それが私が思いついた問題を引き起こしている可能性がある唯一のことです...
これがすべての(私が望む)関連するコードです:
AppModule
public static void bind(ServiceBinder binder) {
binder.bind(MemberDAOInterface.class, MemberDAO.class);
}
@Match("*DAO*")
public static void adviseTransactions(HibernateTransactionAdvisor advisor,
MethodAdviceReceiver receiver) {
advisor.addTransactionCommitAdvice(receiver);
}
MemberDAOInterface
public interface MemberDAOInterface {
@CommitAfter
public void addMember(MemberEntity memberEntity);
@CommitAfter
public void updateMember(MemberEntity memberEntity);
@CommitAfter
public void deleteMember(MemberEntity memberEntity);
}
MemberDAO
public class MemberDAO implements MemberDAOInterface {
@Inject
private Session session;
public void addMember(MemberEntity memberEntity) {
this.session.persist(memberEntity);
}
public void updateMember(MemberEntity memberEntity) {
this.session.update(memberEntity);
}
public void deleteMember(MemberEntity memberEntity) {
this.session.delete(memberEntity);
}
}