Можно ли разделить значение карты на два типа? - PullRequest
0 голосов
/ 07 мая 2019
@Entity
@Getter
@Setter
@NoArgsConstructor
public class Notification {

    @Id
    private String id;
    private String name;
    private String tags;
    private String notificationType;
    @ElementCollection
    @MapKeyColumn(name = "notificationType")
    @Column(name = "value")
    @CollectionTable(name = "type_attributes", joinColumns = @JoinColumn(name = "notification_id"))
    private Map<String, Object> info;

}

Я должен сохранить информацию двумя типами.мой пример выглядит так:

1. If key is A
info : {"A" : "A Value"}
2. If Key is B
info : {"B" : ["Item1", "Item2"]}

, поэтому я не знаю, как решить эту проблему.Пожалуйста, предложите, какой метод хорош.

Ответы [ 5 ]

1 голос
/ 07 мая 2019

Попробуйте использовать Multimap, а не Map

0 голосов
/ 07 мая 2019

Я думаю, хорошим решением для вашей проблемы может быть:

Multimap<String, String> myMultiMap = LinkedListMultimap.create();
0 голосов
/ 07 мая 2019

Тогда используйте json.Это останется вашей структурой данных, и вы легко сможете получить желаемое значение.

private List<JsonObject> info;

or

private List<String> info; //JsonString
0 голосов
/ 07 мая 2019

Просто используйте «Multimap» вместо «Map».

0 голосов
/ 07 мая 2019

Если вы хотите сохранить объекты различных типов в качестве значений (например, оба являются строками), вы можете использовать массив в качестве значения. например

private Map<String, Object> info;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...