我正在使用EJB3.1,CDI和持久域对象模式编写JEE6应用程序。 在某些情况下,我需要在实体(jpa2.0)中有一个会话bean的实例。 使用@Inject或@EJB注入它不起作用。它始终是一个空引用。
唯一可行的解决方案是通过InitialContext进行查找。但这真的很糟糕。 有没有人知道如何从实体访问会话bean?
我已经阅读过无状态会话bean工厂但无法找到任何示例。
答案 0 :(得分:1)
实体是由您创建的,如果您想将bean注入其中,则应该由容器创建它们。
从技术上讲,您可以让您的实体由CDI容器管理,而不是让new YourEntity
使用@Inject @New YourEntity entity
。但这有点违反直觉。我没试过。
这是关于贫血数据模型与域驱动设计的更多讨论的一部分。即您的实体是否应该是没有任何行为的数据持有者,或者它们也应该具有逻辑(并隐藏其状态)