Как получить тип данных Clob из оракула в ResultSet в Java - PullRequest
0 голосов
/ 28 апреля 2018

Я связан с базой данных оракула. Мне нужно получить информацию из таблиц в мой класс обслуживания, а затем отправить ее контроллеру. Одной из переменных является тип данных CLOB. Как его получить и разобрать в List of String? Вот мой псевдокод:

public class ModelClass {
private List<String> comments;

public ModelClass(List<String> comments) {
    this.comments = comments;
}

public List<String> getComments() {
    return comments;
}
}

Затем я пытаюсь выполнить запрос в ResultSet и поместить его в Список ModelClass ResultSet rS = dataSource.getConnection().createStatement().executeQuery(query.toString()); while (rS.next()) { result.add(new ModelClass((List<String>) rS.getObject(13)));

Очевидно, это не работает. Я не знаю, как получить этот Клоб. Когда я пытаюсь получить результат, у меня появляется следующая ошибка: "oracle.sql.CLOB cannot be cast to java.util.List",, когда я изменяю rS.Object (13) на rS.getClob (13), он также не работает. Не могли бы вы сказать мне, как получить этот объект Clob? На самом деле это JSON с 4 полями.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Clob clob = rs.getClob(13); String json = clob.getSubString(1, (int) clob.length());

Теперь вы можете преобразовать его в объект, используя библиотеку как GSON

0 голосов
/ 28 апреля 2018

Объект CLOB, который вы получаете в результате rS.getObject(13), является строковым объектом. Если вы хотите обработать его как список из 4 полей, вам следует преобразовать его в объект JSON, используя любую библиотеку в качестве GSON, а затем запросить у объекта JSON его поля.

while (rS.next()) {

    CLOB clobOjb = (CLOB) rS.getObject(13);
    // convert clobObj (or it's string conversion) to JSON
    // extract the fields from JSON object and store them in a list
    result.add(new ModelClass( /* the list */ ));
...