私は現在、以下のJPAのセットアップを持っている:JPAを使用する方法setMaxResults()(LIMIT 20)Entity Managerなし?
com.example.entities.Employee
com.example.repository.EmployeeRepository
com.example.controllers.EmployeeController
アプリケーション設定は、SQLサーバーを指しているとコントローラが問題なくエンドポイント(すなわち「/のGetEmployees」)を有しています。
しかし、私は戻ってくる従業員の数を制限したいと思います。
JPAを使用した後、多くのチュートリアルでは、エンティティマネージャコードを使用していません。
代わりに、私は、リポジトリ内の次のデザインパターンを使用しています:
com.example.repository.EmployeeRepository以下
package com.example.repository;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import com.example.entities.Employee;
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
@Query("SELECT "
+ "e.eid, "
+ "e.firstname, "
+ "e.lastname, "
+ "e.dept) "
+ "FROM Employee e")
public List<Employee> getAllEmployees();
}
は、エンドポイントのコントローラファイルのコピーです:
com.example.controllers.EmployeeController
package com.example.controllers;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.example.entities.Employee;
import com.example.repository.EmployeeRepository;
@Controller
public class EmployeeController {
@Autowired
EmployeeRepository empRepo;
@RequestMapping(name = "/getAllEmployees")
public @ResponseBody List<Employee> getAllEmployees() {
return empRepo.getAllEmployees();
}
}
これらのファイルにはというentityManagerはありませんので、抽象的な状況になり、明示的に使用することなくsetMaxResults(20)メソッドをどこで開始するのか分かりません。 entityManager。
私ははsetMaxResults機能は通常、クエリオブジェクトに接続されていることに気付きました:
q.setMaxResults(n)
任意のアイデア?
あなただけの 'LIMIT 20'のようなものを追加するためのクエリを変更することはできますか? – csmckelvey
あなたはEntityManagerを使用していないので、JPA APIを使用していないので、Spring Data JPA APIを使用しています。タグ –
@csm_dev JPQLに "LIMIT"というキーワードがないと意味がない場合 –