将会话bean注入实体

时间:2011-11-15 08:45:30

标签: java jpa java-ee-6 cdi ejb-3.1

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

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

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

1 个答案:

答案 0 :(得分:1)

实体是由您创建的,如果您想将bean注入其中,则应该由容器创建它们。

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

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