リポジトリレイヤでカスタム動的検索を行う必要があります。クエリメソッドまたはクエリアノテーションを使用してクエリを実行することはできません。 この動的検索は、私がアプリケーションを実行すると、私はcom.dwengo.cards.repositoryにコンストラクタのfindAllの指定方法にアクセスできるカスタムリポジトリ
パラメータ0を得るpleJpaRepositoryバネクラスによって実装されているのfindAll(仕様、ページング)
public interface CardsRepositoryCustom {
public Page<Cards> customSearch(CardSearch CardSearch, Pageable page);
}
public interface CardsRepository extends JpaRepository<Cards, Integer>, CardsRepositoryCustom {
}
@Repository
public class CardsRepositoryImpl extends SimpleJpaRepository implements CardsRepositoryCustom{
public CardsRepositoryImpl(Class<Cards> domainClass, EntityManager em) {
super(domainClass, em);
}
@PersistenceContext
private EntityManager em;
@Override
public Page<Cards> customSearch(CardSearch CardSearch, Pageable page) {
Specification<Cards> specification = (Root<Cards> root, CriteriaQuery<?> cq, CriteriaBuilder cb) -> {
..
}
return this.findAll(specification, page);
}
}
@Service
public class CardsServiceImpl implements CardsService {
@Autowired
public CardsServiceImpl(CardsRepository CardsRepository) {
this.CardsRepository = CardsRepository;
}
public CardsRepository CardsRepository;
@Override
public Page<Cards> customSearch(CardSearch CardSearch, Pageable page) {
...
return CardsRepository.customSearch(CardSearch, page);
}
...
}
を呼び出す必要があります。 CardsRepositoryImplが必要です
をCardsRepositoryImplコンストラクタの最初のパラメータは無用です。 superを呼び出すときは、Cards.classを直接使用してください。 – JEY
変更なしcom.dwengo.cards.repository.CardsRepositoryImplのコンストラクタのパラメータ0は、見つからなかったjava.lang.Class型のBeanを必要としました。 –
だからあなたは定義からそれを削除していません...そしてあなたはコンストラクタにautowiredを設定する必要があります。 (JpaEntityInformation entityInformation、EntityManagerのはEntityManager)または@Autowired 公共CardsRepositoryImpl(クラスdomainClass、のEntityManager EM){ スーパー(カード付き(クラス domainClass、のEntityManager EM):私たちはSimpleJpaRepositoryクラスを拡張するとき –
JEY