我正在尝试在专用的DAO类中执行页面外的数据库事务。
This回答了一点帮助,但是按照official website上的说明后,交易仍未提交。我没有收到任何错误 - 我可以看到正在运行插入查询,但数据库中没有任何条目。
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);
}
}
答案 0 :(得分:0)
回答你的这个问题:
DAO类和接口是否必须在@Match()的特定包中才能找到它们?
我在你提到的问题中找到了这个:
默认情况下,@ CommitAfter注释仅适用于页面/组件类。要在服务对象中获得相同的行为,您需要额外的代码片段。
所以是,你的DAO必须是挂毯服务。你需要把它们没有服务包。
希望有所帮助。