Я пытаюсь получить длинную строку, сохраненную в таблице базы данных моей комнаты. Но я заметил, что запрос DAO возвращает только первые 5000 символов этой строки.
Я вижу, что в базе данных существуют полные 11 000 символов после того, как я сбрасываю ее на свое устройство и проверяю. это (с использованием браузера БД для SQLite). Полный необрезанный текст существует как в моей таблице ENTRIES, так и в моей таблице ENTRIES_content.
Объект комнаты:
//@Fts4(tokenizer = FtsOptions.TOKENIZER_UNICODE61)
@Fts4
@Entity(tableName = "ENTRIES")
public class Entry {
private int rowid;
@ColumnInfo(name = "date")
private String date;
@ColumnInfo(name = "entry")
private String entryText;
public String getEntryText() {
return entryText;
}
}
ДАО:
@Dao
public interface EntriesDAO {
...
@Query("SELECT *, rowid FROM ENTRIES WHERE date LIKE :date")
Entry getEntryByDate(String date);
}
Запись извлекается из базы данных с использованием шаблона ViewModel, который вызывает уровень репозитория, который затем, наконец, вызывает метод DAO, который я показал выше.
mEntriesViewModel = new ViewModelProvider(this, factory).get(EntriesViewModel.class);
...
Entry currentEntry = mEntriesViewModel.getEntryByDate(entryDate);
String entryText = currentEntry.getEntryText();
entryText.length(); // 5000
Я попробовал использовать два альтернативных запроса ниже, но они оба вернули один и тот же усеченный текст:
@Query("SELECT *, rowid FROM ENTRIES WHERE rowid = (SELECT rowid FROM ENTRIES WHERE date LIKE :date)")
@RawQuery
Entry getEntryByDateRaw(SupportSQLiteQuery query);
// Used with this
//SupportSQLiteQuery query = new SimpleSQLiteQuery("SELECT * FROM ENTRIES WHERE date LIKE ?", new Object[]{ "%2024-01-01%" });
//return mEntriesViewModel.getEntryByDateRaw(query);
Подробнее здесь: https://stackoverflow.com/questions/786 ... text-field