如何在ejb Web服务中结束事务性Web服务之前获取持久化对象的Id?
问题描述:
我正在开发一个带有注释为@stateless和@Webservice的EJB和Web服务的SOA应用程序。在我的一个Web方法中,我的操作从客户端获取DTO对象,并在持久化之后返回它。实际上,我需要在Web服务DTO响应中将我的对象的持久标识返回给客户端。但ejb在完成操作后提交我的插入。所以在调用“坚持”后,我没有自动生成的ID呢!如何在ejb Web服务中结束事务性Web服务之前获取持久化对象的Id?
任何标准的解决方案,请吗?
答
// force the entityManager to write all the pending changes to the database, and thus generate the ID
entityManager.flush();
// get the ID assigned to the newly persisted entity
Long generatedId = entity.getId();
在webservice会话bean中注入entityManager真的很标准吗?我只是将它注入一个通用的抽象dao bean中,它处理我所有的crud操作。 –
然后向DAO添加一个flush方法,并从web服务调用dao.flush()。 –
这似乎是一个很好的建议。谢谢 :) –