Я пытаюсь выполнять транзакции с базой данных за пределами страницы в специальном классе DAO.
Этот ответ немного помог, однако после выполнения инструкций по официальный сайт транзакции все еще не совершаются. Я не получаю никаких ошибок - я вижу, что запросы вставки выполняются, но в базе данных нет записей.
Должны ли классы и интерфейсы 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);
}
ЧленDAOInterface
public interface MemberDAOInterface {
@CommitAfter
public void addMember(MemberEntity memberEntity);
@CommitAfter
public void updateMember(MemberEntity memberEntity);
@CommitAfter
public void deleteMember(MemberEntity memberEntity);
}
ЧленDAO
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);
}
}