@@ -290,4 +290,92 @@ public interface OwnerRepository {
290290 editor .assertProblems ("SELECTX|HQL: mismatched input 'SELECTX'" );
291291 }
292292
293+ @ Test
294+ void jdbcQueryNoErrors () throws Exception {
295+ String source = """
296+ package example.demo;
297+
298+ import org.springframework.data.jdbc.repository.query.Query;
299+ import org.springframework.data.repository.CrudRepository;
300+
301+ public interface OwnerRepository extends CrudRepository<Object, Integer> {
302+
303+ @Query("SELECT * FROM owner WHERE last_name = :lastName")
304+ List<Object> findByLastName(String lastName);
305+
306+ }
307+ """ ;
308+ String docUri = directory .toPath ().resolve ("src/main/java/example/demo/OwnerRepository.java" ).toUri ()
309+ .toString ();
310+ Editor editor = harness .newEditor (LanguageId .JAVA , source , docUri );
311+ editor .assertProblems ();
312+ }
313+
314+ @ Test
315+ void jdbcQueryErrorReported () throws Exception {
316+ String source = """
317+ package example.demo;
318+
319+ import org.springframework.data.jdbc.repository.query.Query;
320+ import org.springframework.data.repository.CrudRepository;
321+
322+ public interface OwnerRepository extends CrudRepository<Object, Integer> {
323+
324+ @Query("SELECTX * FROM owner WHERE last_name = :lastName")
325+ List<Object> findByLastName(String lastName);
326+
327+ }
328+ """ ;
329+ String docUri = directory .toPath ().resolve ("src/main/java/example/demo/OwnerRepository.java" ).toUri ()
330+ .toString ();
331+ Editor editor = harness .newEditor (LanguageId .JAVA , source , docUri );
332+ editor .assertProblems ("SELECTX|MySQL: mismatched input 'SELECTX' expecting {'ALTER'," );
333+ }
334+
335+ @ Test
336+ void jdbcQueryNormalAnnotationErrorReported () throws Exception {
337+ String source = """
338+ package example.demo;
339+
340+ import org.springframework.data.jdbc.repository.query.Query;
341+ import org.springframework.data.repository.CrudRepository;
342+
343+ public interface OwnerRepository extends CrudRepository<Object, Integer> {
344+
345+ @Query(value = "SELECTX * FROM owner WHERE last_name = :lastName")
346+ List<Object> findByLastName(String lastName);
347+
348+ }
349+ """ ;
350+ String docUri = directory .toPath ().resolve ("src/main/java/example/demo/OwnerRepository.java" ).toUri ()
351+ .toString ();
352+ Editor editor = harness .newEditor (LanguageId .JAVA , source , docUri );
353+ editor .assertProblems ("SELECTX|MySQL: mismatched input 'SELECTX' expecting {'ALTER'," );
354+ }
355+
356+ @ Test
357+ void jdbcOnlyProjectNoReconcilingWithoutDbConnector () throws Exception {
358+ directory = new File (ProjectsHarness .class .getResource ("/test-projects/aot-data-repositories-jdbc/" ).toURI ());
359+ String projectDir = directory .toURI ().toString ();
360+ projectFinder .find (new TextDocumentIdentifier (projectDir )).get ();
361+
362+ String source = """
363+ package example.demo;
364+
365+ import org.springframework.data.jdbc.repository.query.Query;
366+ import org.springframework.data.repository.CrudRepository;
367+
368+ public interface OwnerRepository extends CrudRepository<Object, Integer> {
369+
370+ @Query("SELECTX * FROM owner")
371+ List<Object> findAll();
372+
373+ }
374+ """ ;
375+ String docUri = directory .toPath ().resolve ("src/main/java/example/demo/OwnerRepository.java" ).toUri ()
376+ .toString ();
377+ Editor editor = harness .newEditor (LanguageId .JAVA , source , docUri );
378+ editor .assertProblems ();
379+ }
380+
293381}
0 commit comments