Как сделать динамический запрос для сервера mcp при весенней загрузке Java [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как сделать динамический запрос для сервера mcp при весенней загрузке Java [закрыто]

Сообщение Anonymous »

Я новичок в MCP и хочу разработать сервер MCP для доступа к моей базе данных.
Я написал такой инструмент (используя спецификацию JPA)

Код: Выделить всё

@Tool(description = "Find Page of employees with filtering options")
public EmployeePageRes findAllFilteredEmployees(@ToolParam(description = "Filtering options for employee search") EmployeeFilter option) {

Pageable pageable = PageRequest.of(option.getPage(), option.getLimit());

log.info("Finding all filtered employees with options: {}", option);

Specification spec = Specification.where(null);

if (option.getEmployeeId() != null) {
spec = spec.and(EmployeeSpecification.hasEmployeeId(option.getEmployeeId()));
}

if (option.getFirstName() != null) {
spec = spec.and(EmployeeSpecification.hasFirstName(option.getFirstName()));
}

if (option.getLastName() != null) {
spec = spec.and(EmployeeSpecification.hasLastName(option.getLastName()));
}
if (option.getEmail() != null) {
spec = spec.and(EmployeeSpecification.hasEmail(option.getEmail()));
}
if (option.getPhone() != null) {
spec = spec.and(EmployeeSpecification.hasPhone(option.getPhone()));
}
if (option.getHireDateFrom() != null || option.getHireDateTo() != null) {
spec = spec.and(EmployeeSpecification.hireDateBetween(option.getHireDateFrom(), option.getHireDateTo()));
}
if (option.getManagerId() != null) {
spec = spec.and(EmployeeSpecification.hasManagerId(option.getManagerId()));
}
if (option.getJobTitle() != null) {
spec = spec.and(EmployeeSpecification.hasJobTitle(option.getJobTitle()));
}
if (option.getMinSalary() != null || option.getMaxSalary() != null) {
spec = spec.and(EmployeeSpecification.salaryBetween(option.getMinSalary(), option.getMaxSalary()));
}
Page employeePage = employeeRepository.findAll(spec, pageable);

return EmployeePageRes.builder()
.employees(employeePage.getContent())
.totalPages(employeePage.getTotalPages())
.totalElements(employeePage.getTotalElements())
.page(employeePage.getNumber())
.limit(employeePage.getSize())
.build();
}
Как видите, мой код объединяет все условия только с помощью AND. Но я хочу обрабатывать
запросы, включающие множество сложных условий, таких как AND, OR и вложенные фильтры.
Есть ли какое-либо решение для динамического построения и обработки этих запросов?
(Мне не нужен прямой запрос в базу данных)
Я использую Java с Spring Boot.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... pring-boot
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»