たいのですがオーバーライドするEJB3セッションbeanのメソッドを一般の引数できれば全くないのでしょうか。[定休日]

StackOverflow https://stackoverflow.com/questions/14801

質問

い、以下のEJB3インタフェース/授業:

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
}

その他の豆にアクセスする FooRepository bean:

//...
@EJB
private FooRepository fooRepository;

public void someMethod(Foo foo)
{
    fooRepository.delete(foo);
}
//...

しかし、値がなされたときに実行され削除の方法 FooRepository beanが呼び出されます。代わりに、実施の削除方法は定義されている AbstractRepository が実行されます。

何してるわけではありませんので間違っているのか、あるいは単に制限のJava/EJB3ジェネリック医薬品や相続な遊びとは?

役に立ちましたか?

解決

んでpojoるようになったようです。があったので修正コードしております。行きたいというニーズがインターフェースプランを選んでネットですが、本当のところはわからないけど。

とん"Foo"はコンクリートタイプがないのでいくつかの試験です。

私が書いた主な試験法です。私はこういう事が決められません!

public static void main(String[] args){
        FooRepository fooRepository = new FooRepositoryImpl();
        fooRepository.delete(new Foo("Bar"));
}

public class Foo
{
    private String value;

    public Foo(String inValue){
        super();
        value = inValue;
    }
    public String toString(){
        return value;
    }
}

public interface Repository<E>
{
    public void delete(E entity);
}

public interface FooRepository extends Repository<Foo>
{
    //other methods
}

public class AbstractRespository<E> implements Repository<E>
{
    public void delete(E entity){
        System.out.println("Delete-" + entity.toString());
    }
}

public class FooRepositoryImpl extends AbstractRespository<Foo> implements FooRepository
{
     @Override
       public void delete(Foo entity){
          //do something before deleting the entity
            System.out.println("something before");
          super.delete(entity);
       }
}

他のヒント

で書いてますが、単体テストに対するFooRepositoryクラス用としてPOJO.場合に動作すというより慣れていない他の理由で機能異なる内容器です。

疑いがないでしょうやすのではデバッグの場合試験としてPOJO.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top