Я использовал OpenApigenerate для автоматического генерации следующего API. < /p>
default ResponseEntity getPatients(
@Max(9999999999L)
@Parameter(name = "patientCode", description = "患者コード", in = ParameterIn.QUERY)
@Valid @RequestParam(value = "patientCode", required = false)
@Nullable
Long patientCode,
@Size(max = 30)
@Parameter(name = "kanjiName", description = "漢字氏名", in = ParameterIn.QUERY)
@Valid
@RequestParam(value = "kanjiName", required = false)
@Nullabl
String kanjiName,
@Size(max = 60)
@Parameter(name = "kanaName", description = "カナ氏名", in = ParameterIn.QUERY)
@Valid
@RequestParam(value = "kanaName", required = false)
@Nullable
String kanaName,
@Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}$")
@Size(min = 10, max = 10)
@Parameter(name = "birthday", description = "生年月日(YYYY-MM-DD形式)", in = ParameterIn.QUERY)
@Valid
@RequestParam(value = "birthday", required = false)
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
@Nullable
LocalDate birthday
) {
getRequest().ifPresent(request -> {
for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "[ { \"birthday\" : \"2000-01-23\", \"insurance\" : \"SHAHO\", \"gender\" : \"MALE\", \"patientId\" : 0, \"kanjiName\" : \"kanjiName\", \"patientCode\" : 6, \"kanaName\" : \"kanaName\" }, { \"birthday\" : \"2000-01-23\", \"insurance\" : \"SHAHO\", \"gender\" : \"MALE\", \"patientId\" : 0, \"kanjiName\" : \"kanjiName\", \"patientCode\" : 6, \"kanaName\" : \"kanaName\" } ]";
ApiUtil.setExampleResponse(request, "application/json", exampleString);
break;
}
}
});
return new ResponseEntity(HttpStatus.NOT_IMPLEMENTED);
}
< /code>
I переопределил приведенный выше API и реализовал его в классе контроллера следующим образом. < /p>
public class PatientController implements PatientsApi {
private final PatientService patientService;
@Override
public ResponseEntity getPatients(
@RequestParam(value = "patientCode", required = false) Long patientCode,
@RequestParam(value = "kanjiName", required = false) String kanjiName,
@RequestParam(value = "kanaName", required = false) String kanaName,
@RequestParam(value = "birthday", required = false)
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate birthday) {
List patients = patientService.searchPatients(patientCode, kanjiName, kanaName, birthday);
return ResponseEntity.ok(patients);
}
}
< /code>
Однако ошибка проверки не происходит. (Например, я хочу, чтобы ошибка возникла, когда из параметра запроса получен более 31 символа, но он достигает db.) < /P>
Кто -нибудь может сказать мне, как решить эту проблему?2025-07-22T22:09:35.926+09:00 INFO 48696 --- [archi-cloud-karte] [ main] c.a.karte.ArchiCloudKarteApplication : Starting ArchiCloudKarteApplication using Java 22 with PID 48696 (C:\Users\akuta\Downloads\app\0246archi-showcase-app\showcase-sor-backend\build\classes\java\main started by akuta in C:\Users\akuta\Downloads\app\0246archi-showcase-app\showcase-sor-backend)
2025-07-22T22:09:35.929+09:00 INFO 48696 --- [archi-cloud-karte] [ main] c.a.karte.ArchiCloudKarteApplication : The following 1 profile is active: "dev"
2025-07-22T22:09:37.263+09:00 INFO 48696 --- [archi-cloud-karte] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 80 (http)
2025-07-22T22:09:37.279+09:00 INFO 48696 --- [archi-cloud-karte] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-07-22T22:09:37.280+09:00 INFO 48696 --- [archi-cloud-karte] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.41]
2025-07-22T22:09:37.405+09:00 INFO 48696 --- [archi-cloud-karte] [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
2025-07-22T22:09:37.406+09:00 INFO 48696 --- [archi-cloud-karte] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1432 ms
2025-07-22T22:09:38.137+09:00 INFO 48696 --- [archi-cloud-karte] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 80 (http) with context path '/api'
2025-07-22T22:09:38.146+09:00 INFO 48696 --- [archi-cloud-karte] [ main] c.a.karte.ArchiCloudKarteApplication : Started ArchiCloudKarteApplication in 2.828 seconds (process running for 3.256)
2025-07-22T22:09:51.048+09:00 INFO 48696 --- [archi-cloud-karte] [p-nio-80-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-07-22T22:09:51.048+09:00 INFO 48696 --- [archi-cloud-karte] [p-nio-80-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2025-07-22T22:09:51.049+09:00 INFO 48696 --- [archi-cloud-karte] [p-nio-80-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
2025-07-22T22:09:51.207+09:00 ERROR 48696 --- [archi-cloud-karte] [p-nio-80-exec-1] c.a.k.exception.GlobalExceptionHandler : RuntimeException occurred
jakarta.validation.ConstraintDeclarationException: HV000151: A method overriding another method must not redefine the parameter constraint configuration, but method PatientController#getPatients(Long, String, String, LocalDate) redefines the configuration of PatientsApi#getPatients(Long, String, String, LocalDate).
at org.hibernate.validator.internal.metadata.aggregated.rule.OverridingMethodMustNotAlterParameterConstraints.apply(OverridingMethodMustNotAlterParameterConstraints.java:24) ~[hibernate-validator-8.0.2.Final.jar:8.0.2.Final]
at org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData$Builder.assertCorrectnessOfConfiguration(ExecutableMetaData.java:462) ~[hibernate-validator-8.0.2.Final.jar:8.0.2.Final]
at org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData$Builder.build(ExecutableMetaData.java:380) ~[hibernate-validator-8.0.2.Final.jar:8.0.2.Final]
at org.hibernate.validator.internal.metadata.aggregated.BeanMetaDataBuilder$BuilderDelegate.build(BeanMetaDataBuilder.java:260) ~[hibernate-validator-8.0.2.Final.jar:8.0.2.Final]
at org.hibernate.validator.internal.metadata.aggregated.BeanMetaDataBuilder.build(BeanMetaDataBuilder.java:133) ~[hibernate-validator-8.0.2.Final.jar:8.0.2.Final]
at org.hibernate.validator.internal.metadata.BeanMetaDataManagerImpl.createBeanMetaData(BeanMetaDataManagerImpl.java:206) ~[hibernate-validator-8.0.2.Final.jar:8.0.2.Final]
at org.hibernate.validator.internal.metadata.BeanMetaDataManagerImpl.getBeanMetaData(BeanMetaDataManagerImpl.java:165) ~[hibernate-validator-8.0.2.Final.jar:8.0.2.Final]
at org.hibernate.validator.internal.engine.ValidatorImpl.validateParameters(ValidatorImpl.java:267) ~[hibernate-validator-8.0.2.Final.jar:8.0.2.Final]
at org.hibernate.validator.internal.engine.ValidatorImpl.validateParameters(ValidatorImpl.java:235) ~[hibernate-validator-8.0.2.Final.jar:8.0.2.Final]
at org.springframework.validation.beanvalidation.MethodValidationAdapter.invokeValidatorForArguments(MethodValidationAdapter.java:261) ~[spring-context-6.2.7.jar:6.2.7]
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:168) ~[spring-context-6.2.7.jar:6.2.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.2.7.jar:6.2.7]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) ~[spring-aop-6.2.7.jar:6.2.7]
at com.archi.karte.controller.PatientController$$SpringCGLIB$$0.getPatients() ~[main/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) ~[spring-web-6.2.7.jar:6.2.7]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) ~[spring-web-6.2.7.jar:6.2.7]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.7.jar:6.2.7]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.7.jar:6.2.7]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.7.jar:6.2.7]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.7.jar:6.2.7]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) ~[spring-webmvc-6.2.7.jar:6.2.7]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) ~[spring-webmvc-6.2.7.jar:6.2.7]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.7.jar:6.2.7]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.2.7.jar:6.2.7]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:500) ~[jakarta.servlet-api-5.0.0.jar:5.0.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.2.7.jar:6.2.7]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587) ~[jakarta.servlet-api-5.0.0.jar:5.0.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.41.jar:10.1.41]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.7.jar:6.2.7]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.7.jar:6.2.7]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.7.jar:6.2.7]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.7.jar:6.2.7]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.7.jar:6.2.7]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.7.jar:6.2.7]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-embed-core-10.1.41.jar:10.1.41]
at java.base/java.lang.Thread.run(Thread.java:1570) ~[na:na]
Подробнее здесь: https://stackoverflow.com/questions/797 ... -generated