0

我正在尝试在专用 DAO 类中的页面之外执行数据库事务。

这个答案有点帮助,但是在按照官方网站上的说明进行操作后,交易仍未提交。我没有收到任何错误 - 我可以看到正在运行插入查询,但数据库中没有出现任何条目。

DAO 类和接口是否必须在特定的包中@Match()才能找到它们?这是唯一可能导致我想出的问题的事情......

这是所有(我希望)相关代码:

应用模块

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);
}

成员DAO接口

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);
    }
}
4

1 回答 1

0

回答你的这个问题:

DAO 类和接口是否必须位于特定的包中,@Match() 才能找到它们?

我在您提到的问题中发现:

@CommitAfter 注解默认情况下仅适用于页面/组件类。要在服务对象中获得相同的行为,您需要那段额外的代码。

所以的,你的 DAO 必须是挂毯服务。您需要将它们放在服务包中。

希望有帮助。

于 2013-02-25T13:07:06.177 回答