मैं Employee
इकाई के लिए एक आरईएसटी लिंक बनाना चाहता हूं जो मूल रूप से findByAllFields
क्वेरी होगी। बेशक इसे Page
और Sort
के साथ जोड़ा जाना चाहिए।स्प्रिंग डेटा आरईएसटी कस्टम क्वेरी एकीकरण
@Entity
public class Employee extends Persistable<Long> {
@Column
private String firstName;
@Column
private String lastName;
@Column
private String age;
@Column
@Temporal(TemporalType.TIMESTAMP)
private Date hiringDate;
}
तो मैं करना चाहते हैं की सुविधा देता है एक प्रश्न मैं कहाँ कर सकते हैं कहते हैं:: आदेश है कि मैं निम्नलिखित कोड लागू कर दिया है करने के लिए
http://localhost:8080/myApp/employees/search/all?firstName=me&lastName=self&ageFrom=20&ageTo=30&hiringDateFrom=12234433235
तो मैं निम्नलिखित है Repository
@RepositoryRestResource(collectionResourceRel="employees", path="employees")
public interface EmployeeRepository extends PagingAndSortingRepository<Employee, Long>,
JpaSpecificationExecutor<Employee> {
}
ठीक है तो अब मैं एक RestController जरूरत
@RepositoryRestController
public class EmployeeSearchController {
@Autowired
private EmployeeRepository employeRepository;
@RequestMapping(value = "/employees/search/all/search/all", method = RequestMethod.GET)
public Page<Employee> getEmployees(EmployeeCriteria filterCriteria, Pageable pageable) {
//EmployeeSpecification uses CriteriaAPI to form dynamic query with the fields from filterCriteria
Specification<Employee> specification = new EmployeeSpecification(filterCriteria);
return employeeRepository.findAll(specification, pageable);
}
ठीक है, जाहिर है यह इसकी नौकरी करता है लेकिन यह हैटियोस के साथ एकीकृत नहीं है। मैं एक संसाधन यह करने के लिए नियंत्रक को बदलने को इकट्ठा करने का प्रयास किया:
public PagedResources<Resource<Employee>> getEmployees(
PagedResourcesAssembler<Employee> assembler,
EmployeeCriteria filterCriteria, Pageable pageable) {
//EmployeeSpecification uses CriteriaAPI to form dynamic query with the fields from filterCriteria
Specification<Employee> specification = new EmployeeSpecification(filterCriteria);
Page<Employee> employees = employeeRepository.findAll(specification, pageable);
return assembler.toResource(employees);
}
जाहिर है मैं ऊपर से कुछ याद कर रहा हूँ के बाद से यह does not काम और मैं निम्नलिखित अपवाद हो रही है
:
Could not instantiate bean class [org.springframework.data.web.PagedResourcesAssembler]: No default constructor found;
ठीक है, प्रश्न को स्पष्ट करने के लिए मैं उपर्युक्त संसाधन को हेटोएस आर्किटेक्चर के बाकी हिस्सों में एकीकृत करने की कोशिश कर रहा हूं। मुझे पूरा यकीन नहीं है कि यह सही दृष्टिकोण है इसलिए किसी अन्य सुझाव का स्वागत है।
संपादित करें: यहां आप एक समान कार्यान्वयन देख सकते हैं। कृपया कॉन्फ़िगरेशन पर एक नज़र डालें, आप देखेंगे कि सभी "व्यक्ति" नियंत्रक काम कर रहे हैं। https://github.com/cgeo7/spring-rest-example
अगर आप अपनी समस्या के लिए सरल GitHub प्रोजेक्ट बना सकते हैं, यह आपकी समस्या का पता लगाने के लिए ... क्योंकि वहाँ कोई पर्याप्त जानकारी आसान होगा - अपने विन्यास, निर्भरता और आदि –
मैं देरी क्षमा चाहते हैं। मैंने एक मामूली समान परियोजना बनाई है जो मेरे पास https://github.com/cgeo7/spring-rest-example – ChrisGeo
@ChrisGeo और @ Stackee007 की सभी कठिनाइयों को प्रतिबिंबित करती है, क्या आप मुझसे पूछते हैं कि अगर आप अपने 'कर्मचारी न्यायालय को परिभाषित करते हैं' 'और 'कर्मचारी विनिर्देश' कक्षाएं? – BalRog