我正在使用在Wildfly 8.2.1 App服务器上运行的Mybatis 3.3.0和EJB 3.1。
我修改了我的EJB以获得远程接口并将接口注入到我需要功能的所有类中,而不是注入LocalBean实现(就像之前一样)。
这导致我的映射器文件的所有useGeneratedKeys
配置插入语句停止工作。现在,在插入成功运行后,我的ID字段仍然为空。
这是怎么导致mybatis无法将ID填入我的POJO。
答案 0 :(得分:0)
事实证明,当您的EJB被代理并且无法将生成的ID放回POJO时,mybatis会感到困惑。
要修复它,您只需将带有@javax.ejb.LocalBean
实现的EJB Annotated直接注入要使用它的类中。这不是注入带有@javax.ejb.Remote
注释的接口。
此外,我使用远程EJB测试了相同的实现,并发现如果注入@javax.ejb.Remote
接口类型,您仍然无法从mybatis获取生成的密钥。在使用远程处理时,我还没有找到将生成的ID放入POJO的解决方案。