のために拡張していますジェネリック、ワイルドカードやスーパー/ Iは、次のJPAエンティティの継承階層を持つインターフェース
- 抽象アカウント
- ChildminderAccountはアカウント
- ParentAccountアカウント 私は希望
を拡張を拡張します私のDAOインターフェイス、すなわち3つのインターフェイスで同じ種類の継承階層を持つようにする:
- AccountDAO
- ChilminderAccountDAO
- ParentAccountDAO
ここ例えば両方ChilminderAccountDAOとParentAccountDAOインターフェースに共通のメソッドを保持する私のベースDAOインタフェースである:
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import com.bignibou.domain.Account;
public interface AccountDAO extends CrudRepository<Account, Integer> {
@Modifying
@Transactional
@Query("UPDATE Account a SET a.accountValidated = false WHERE a.accountToken = ?1")
int deactivateAccountFromToken(String accountToken);
@Modifying
@Transactional
@Query("UPDATE Account a SET a.accountValidated = true WHERE a.accountToken = ?1")
int reactivateAccountFromToken(String accountToken);
@Query("SELECT COUNT(a) FROM Account a WHERE a.accountEmailAddress = :accountEmailAddress")
long checkIfEmailAddressAlreadyExists(@Param("accountEmailAddress") String accountEmailAddress);
Account findByAccountToken(@Param("accountToken") String accountToken);
Account findByAccountEmailAddress(@Param("accountEmailAddress") String accountEmailAddress);
}
Iは、次にしようとしました私のChildminderDAOインターフェイスを次のように定義します。 public interface ChildminderAccountDAO extends CrudRepository<? super Account, Integer>, AccountDAO
結果は
タイプChildminderAccountDAOは、 CrudRepositoryを拡張または実装できません。
インターフェースCrudRepositoryが 異なる引数で複数回実施することができない:CrudRepositoryと CrudRepository
もたらすpublic interface ChildminderAccountDAO extends CrudRepository<ChildminderAccount, Integer>, AccountDAO
:スーパータイプは、私も試み ワイルドカードを指定しなくてもよいです
いずれも機能しません。サブインターフェイスにジェネリックス/ワイルドカードを指定する方法がわかりませんスーパーインターフェース内で両方に共通のメソッドを実行し、サブインターフェースがそれぞれのタイプのエンティティ、すなわちChildminderAccountおよびParentAccountで動作することを可能にする。
誰でも私のサブインターフェイスを定義する方法を教えていただけますか?
ありがとうTom! – balteo