2016-12-24 11 views
0

Я разрабатываю приложение Roverfull Dropwizard на основе имеющегося здесь pdf-файла (http://it-ebooks.directory/book-1783289538.html). Я пробовал исследовать эту проблему и не нашел никого с той же проблемой, нести меня здесь, хотя я не слишком хорошо знаком с использованием @Bind или интерфейсов.Использование @Bind для Dropwizard API приводит к ошибке синтаксиса SQL

В любом случае у меня есть сервер MYsql, настроенный на моем компьютере, чтобы запросить различные значения из таблицы учеников моей базы данных SQL через браузер, я должен ввести localhost: 8080/students/[A номер]. Для реализации этого, говорится в документации, чтобы использовать интерфейс Object Access Database с помощью следующего кода:

public interface StudentsDAO { 

@Mapper(StudentMapper.class) 
@SqlQuery("select * from students where studentId = :studentId") 
Student getStudentById(@Bind("studentId") int studentId); 

} 

Это используется мой класс studentResource со следующим кодом:

@Path("/students") 
@Produces(MediaType.APPLICATION_JSON) 
public class StudentResource { 

private final StudentsDAO studentsDao; 



public StudentResource(DBI jdbi) { 
    studentsDao = jdbi.onDemand(StudentsDAO.class); 
} 


@GET 
@Path("/{studentId}") 
public Response getStudent(@PathParam("studentId") int studentId) { 
// retrieve information about the contact with the provided id 
Student student = studentsDao.getStudentById(studentId); 
return Response.ok(student).build(); 
} 
... 

Я проверил на моем сервере MYsql, который запускает «Select * from students, где studentId = 123» возвращает нужного ученика, но когда я делаю localhost: 8080/students/123, он вызывает следующую ошибку:

«У вас есть ошибка в вашем Синтаксис SQL; проверьте руководство, которое corr esponds к версии сервера MySQL для правого синтаксиса использовать вблизи «OPTION SQL_SELECT_LIMIT = DEFAULT» в строке 1"

линия, которая вызывает ошибку является:

Student student = studentsDao.getStudentById(studentId); 

Это в классе studentResource, так что я предположим, что ошибка связана с чем-то в моем интерфейсе DAO ...

Спасибо за помощь!

ответ

0

Проблема, похоже, с вашей версией mysql или разъемом JDBC. Попробуйте обновить mysql до последней версии. Я использую mysql 5.6, и этот код работает безупречно. Однако, чтобы заставить его работать с вашей текущей настройкой mysql, попробуйте добавить запрос «LIMIT». Например: -

@SqlQuery("select * from students where studentId = :studentId LIMIT 1") 
+0

Бинго! Я только что загрузил последний драйвер JDBC-коннектора с сайта Mysql, и он работал нормально, похоже, что тот, который поставляется с DropWizard, устарел ... – VivaLebowski

 Смежные вопросы

  • Нет связанных вопросов^_^