以下代码有效:
@Stateless
@LocalBean
public class MyClass
{
@PersistenceContext(name = "MyPU")
EntityManager em;
public void myBusinessMethod(MyEntity e)
{
em.persist(e);
}
}
但是以下层次结构在 Glassfish 3.0 中(以及带有 EclipseLink 的标准 JPA 注释)中的persist
.
@Stateless
@LocalBean
public class MyClass extends MyBaseClass
{
public void myBusinessMethod(MyEntity e)
{
super.update(e);
}
}
public abstract class MyBaseClass
{
@PersistenceContext(name = "MyPU")
EntityManager em;
public void update(Object e)
{
em.persist(e);
}
}
对于我的 EJB,我在一个抽象类中收集了通用代码,以获取更简洁的代码。(update
还保存了谁做了操作以及何时,我所有的实体都实现了一个接口。)
这个问题不是致命的,我可以简单地将方法复制update
和姐妹方法到子类,但我想将它们全部放在一个地方。
我没有尝试,但这可能是因为我的基类是抽象的,但我想为这种(恕我直言常见)用例学习一个合适的方法。