Mybatis useGeneratedKeys在代理中的EJB失败

问题描述:

我使用的Mybatis 3.3.0和EJB 3.1运行在Wildfly 8.2.1 App服务器上。Mybatis useGeneratedKeys在代理中的EJB失败

我修改了我的EJB,使其具有远程接口并将接口注入到所有需要该功能的类中,而不是注入LocalBean实现(如以前一样)。

这导致我的所有映射器文件的useGeneratedKeys配置插入语句停止工作。现在我的ID字段在插入成功运行后保持为空。

这是如何导致mybatis无法将ID填充到我的POJO中的。

+0

我对SqlSession注入使用mybatis CDI 1.0.0-beta3依赖项 –

事实证明,当您的EJB被代理时,mybatis会感到困惑,并且它无法将生成的ID放回到POJO中。

要解决这个问题,您只需将用@javax.ejb.LocalBean实现直接注释的EJB直接注入要使用它的类中。而不是注入用@javax.ejb.Remote注解的接口。

此外,我使用远程EJB测试了相同的实现,发现如果注入@javax.ejb.Remote接口类型,您仍然无法从mybatis获取生成的密钥。在使用远程处理时,我还没有找到解决方案将生成的ID存入POJO。