2011-11-15 70 views
2

我正在使用EJB3.1,CDI和持久域对象模式编写JEE6应用程序。 在某些情况下,我需要在一个实体(jpa2.0)中拥有一个会话bean的实例。 使用@Inject或@EJB注入它不起作用。它始终是一个空引用。将会话bean注入实体

唯一可能的解决方案是通过InitialContext进行查找。但这真的很糟糕。 有没有人知道解决方案如何从实体访问会话bean?

我已阅读关于无状态会话bean工厂,但无法找到任何示例。

回答

1

实体是由你创建的,如果你想让bean注入到它们中,它们应该由容器创建。

从技术上讲,您可以让您的实体由CDI容器管理,而不是使new YourEntity使用@Inject @New YourEntity entity。但这有点违反直觉。我没有尝试过。

这是关于贫血数据模型vs域驱动设计的更多讨论的一部分。即你的实体是否应该是没有任何行为的数据持有者,或者他们应该也有逻辑(并隐藏他们的状态)