Тип комнатыКонвертер - PullRequest
       9

Тип комнатыКонвертер

0 голосов
/ 31 октября 2018

Я не уверен, что суета о Комнате, поскольку я нахожу это очень дерьмовым. Почти ничего не работает, как ожидалось. К моей проблеме я хочу проверить, что у них есть конвертер типов (пока что разочарован). Чтобы проверить это, я сделал простой урок из примера, который я видел онлайн. Я уверен, что это что-то глупое, даже не связанное с кодом, но я все равно попробую здесь. Пока что у меня есть:

@Entity
public class User {

    @PrimaryKey
    private int id;

    private String name;

    @TypeConverters(Converters.class)
    List<String> pets = new ArrayList<>();

    public User() { }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<String> getPets() {
        return pets;
    }

    public void setPets(List<String> pets) {
        this.pets = pets;
    }
}

Тогда конвертер:

public class Converters {
    @TypeConverter
    public static ArrayList<String> fromString(String value) {
        Type listType = new TypeToken<ArrayList<String>>() {}.getType();
        return new Gson().fromJson(value, listType);
    }
    @TypeConverter
    public static String fromArrayList(ArrayList<String> list) {
        Gson gson = new Gson();
        String json = gson.toJson(list);
        return json;
    }
}

Простой дао:

@Dao
public interface UserDao {

    @Insert(onConflict = REPLACE)
    void insertUser(User user);

    @Query("SELECT * FROM User")
    List<User> getUsers();
}

И, наконец, БД:

@Database(entities = { User.class,}, version = 1, exportSchema = false)
@TypeConverters({Converters.class})
public abstract class RoomDb extends RoomDatabase {

    public abstract UserDao userDao();

}

И все же я получаю "Не могу понять, как сохранить это поле в базе данных. Вы можете рассмотреть вопрос о добавлении преобразователя типа для него" дерьмо. Никаких подробностей, почему не работает конвертер или что так когда-либо. Чтобы избежать неприятностей, я уже пытался использовать @Converters в поле, которое само по себе предлагает альтернативное решение.

Комната до сих пор разочаровывает меня сложными проблемами, и я считаю, что Realm и ObjectBox более последовательны, когда ваша модель довольно сложна.

Не стесняйтесь присоединиться к борьбе со своим пониманием.

1 Ответ

0 голосов
/ 01 ноября 2018

Вместо ArrayList в классе Converters. Попробуйте список. Ваша сущность использует List в качестве объявленного класса. Там может быть проблема с этим.

Это было решение, предложенное Кноссом выше. Я закончил тестировать его с ArrayList и работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...