假設你有以下EJB 3個接口/類:如何用泛型參數覆蓋EJB 3會話bean方法 - 如果可能的話?
public interface Repository<E>
{
public void delete(E entity);
}
public abstract class AbstractRepository<E> implements Repository<E>
{
public void delete(E entity){
//...
}
}
public interface FooRepository<Foo>
{
//other methods
}
@Local(FooRepository.class)
@Stateless
public class FooRepositoryImpl extends
AbstractRepository<Foo> implements FooRepository
{
@Override
public void delete(Foo entity){
//do something before deleting the entity
super.delete(entity);
}
//other methods
}
然後另一個bean訪問該FooRepository
豆:
//...
@EJB
private FooRepository fooRepository;
public void someMethod(Foo foo)
{
fooRepository.delete(foo);
}
//...
但是,永遠不會執行壓倒一切的方法時的刪除方法調用FooRepository
bean。而只執行在AbstractRepository
中定義的刪除方法。
我在做什麼錯,還是僅僅是Java/EJB 3的限制,即泛型和繼承在一起玩不起來呢?
今天它在不改變任何代碼行的情況下工作。所以,運行時環境,調試器或其他東西肯定出了問題...... 感謝您的回答! – 2008-08-19 11:19:40