EzyJPA: Custom Query Result
Updated at 1691032345000Sometimes you don't want to select entire entity. EzyJPA will help you map query result to a result class.
1. Query
Let's say we have query method like this:
@EzyQuery(
value = "select employeeId, firstName from ezyfox_jpa_employee where employeeId = ?0",
nativeQuery = true
)
Optional<Employee> findEmployeeIdAndFirstNameByEmployeeIdOptional(
String employeeId
);
Let's focus on select employeeId, firstName
, we select 2 fields in camel case.
2. Result class
With 2 above fields, we will need create a class with 2 fields same name and same order, example:
@Getter @Setter @EzyQueryResult public class EmployeeIdAndFirstNameResult { private String employeeId; private String firstName; }
Don't for get @EzyQueryResult
annotation, EzyJPA will need this annotation to recognize the result class and create deserializer class for it.
3. Use cases
You can use request class in 3 cases:
- Find one nullable result, example:
EmployeeIdAndFirstNameResult findEmployeeIdAndFirstNameByEmployeeId
- Find one optional result, example:
Optional<Employee> findEmployeeIdAndFirstNameByEmployeeIdOptional
- Fine a list result, example:
List<Employee> findEmployeeIdAndFirstNameListByEmployeeId
Next
You can see how to connect to multi datasources.