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中的。
答
事实证明,当您的EJB被代理时,mybatis会感到困惑,并且它无法将生成的ID放回到POJO中。
要解决这个问题,您只需将用@javax.ejb.LocalBean
实现直接注释的EJB直接注入要使用它的类中。而不是注入用@javax.ejb.Remote
注解的接口。
此外,我使用远程EJB测试了相同的实现,发现如果注入@javax.ejb.Remote
接口类型,您仍然无法从mybatis获取生成的密钥。在使用远程处理时,我还没有找到解决方案将生成的ID存入POJO。
我对SqlSession注入使用mybatis CDI 1.0.0-beta3依赖项 –