Вопрос: Сохранение карты в ORMLite без использования DataType.SERIALIZABLE?


У меня есть относительно простой класс, который в основном поддерживается Map<String,String>, Я хотел бы сохранить этот класс и иметь возможность выполнять поиск внутри ключей на карте. Основываясь на этом Вопрос переполнения стека  У меня такое ощущение, что Карты можно сохранить только в виде сериализованного блоба.

Я также вижу Сайт ORMLite  следующие:

public class Account {
    …
    @ForeignCollectionField(eager = false)
    ForeignCollection<Order> orders;
    …
}

В приведенном выше примере аннотации @ForeignCollectionField   что поле заказов представляет собой набор заказов, соответствующих   учетная запись. Тип поля заказов должен быть либо ForeignCollection   или же Collection<T> - никакие другие коллекции не поддерживаются.   Аннотации @ForeignCollectionField поддерживают следующие поля:

Исходя из вышеизложенного, у меня создается впечатление, что то, что я хочу, невозможно, но я подумал, что я обязательно проверю здесь, чтобы быть уверенным. У меня это сохранилось в Hibernate, но я бы предпочел использовать что-то более легкое, как ORMLite!


3


источник


Ответы:


Да, в ORMLite  продолжать Map, Сохраняя принцип KISS, Collection класс поддерживается. Set а также Map имеют намного больше веса интерфейса для них и, вероятно, никогда не будут поддерживаться.

У меня нет супер-отличной работы для вас. Вы, очевидно, можете использовать ForeignCollection и затем Map которое вы создаете, когда вам нужно получить доступ к коллекции таким образом. Возможно, addOrder() метод, который добавит его в ForeignCollection и Map,


3



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

Но опять же, JSON не является частью java-out-of-the-box, поэтому это может показаться ненужным, если вы все равно не используете его.


4