В моем приложении Spring Boot есть таблица и Pojo, как показано ниже.
@Entity
@Table(name = "attendance_summary")
public class AttendanceSummary implements Serializable {
@Id
@SequenceGenerator(name = "attendance_summary_id_seq",
sequenceName = "attendance_summary_id_seq",
allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "attendance_summary_id_seq")
@Column(name = "id", updatable = false)
public Integer id;
@Column(name = "emp_id", nullable = false)
public Integer empId;
@Column(name = "designation_id")
public Integer designationId;
@Column(name = "designation_category_id")
public Integer designationCategoryId;
@Column(name = "department_id")
public Integer departmentId;
......
}
Теперь я хочу иметь динамические входы для этих полей. Значение пользователя может выбрать
список empIds, обозначения .... или любые их комбинации или даже ни один из них.
Если они не выбирают ни одно из полей, мне нужно вернуть все строки из таблицы в базе данных.
Но в jpa, когда мы пишем методы в репозитории, мы должны указывать имена полей как
public interface AttendanceSummaryRepository extends JpaRepository<Integer,AttendanceSummary>{
List<AttendanceSummary> findByEmpIdAndDesignationId....(List<Integer> empIdList,List<Integer> designationIdList ... );
}
Это означает, что если любой из этих параметров будет нулевым, я получу ошибку или исключение, и в результате я пропущу некоторые данные.
где, как в PHP или другом подобном языке, я могу просто проверить значение нужных фильтров и просто динамически добавить предложение where в запрос.
query= "Select * from attendance_summary where ";
if(empIdList != null)
query = query + " emp_id in empIdList "
if(designationIdList != null)
query = query + " designation_id in designationIdList "
.....
//You get the idea.
Есть ли способ сделать это с помощью jpaDataMethods, и если да, то как. Любые подробные объяснения / ссылки на ресурсы приветствуются.
Извините за плохой английский, и если я не смог правильно объяснить мою проблему.