Как я могу связать Необязательное значение с моим оператором SQL в Java - PullRequest
0 голосов
/ 14 января 2019

Я использую среду dropwizard для создания RESTful API. То, что я не могу заставить работать - это привязать Optional<Value> к моему SQL-выражению.

Я также хотел бы иметь возможность привязывать объект напрямую, вместо того, чтобы передавать параметры один за другим, но я не могу понять, как это сделать. Это может иметь аналогичное или такое же решение.

    @SqlUpdate("INSERT INTO TASKS (project_id, creator_id, stage, title, description, created_at, priority) VALUES (:projectId, :creatorId, :stage, :title, :desc, :createdAt, :priority)")
    int insertTask(
            @Bind("projectId") int projectId,
            @Bind("creatorId") int creatorId,
            @Bind("stage") String stage,
            @Bind("title") String title,
            @Bind("desc") String description,
            @Bind("user") int userId,
            @Bind("createdAt") Timestamp createdAt,
            @Bind("priority") Optional<Priority> priority
    );

Исходя из моей отладки, это ошибка. priority:Optional[LOW] вместо priority:"LOW"

UnableToCreateStatementException: Exception while binding 'priority'

[
statement: "UPDATE TASKS SET project_id = :projectId, stage = :stage, title = :title, description = :desc, priority = :priority WHERE task_id = :taskId",
located: "UPDATE TASKS SET project_id = :projectId, stage = :stage, title = :title, description = :desc, priority = :priority WHERE task_id = :taskId",
rewritten: "/* TasksDAO.updateTask */ UPDATE TASKS SET project_id = ?, stage = ?, title = ?, description = ?, priority = ? WHERE task_id = ?",
arguments: { positional:{}, named:{stage:'In Progress',title:'Test Task 1',priority:Optional[LOW],projectId:1,taskId:1,desc:'This is the first'},finder:[]}
]
...