Можно ли сохранить HashMap в MongoDB / ArangoDB, где KEY HashMap - это пользовательский объект Java, а VALUE - также пользовательский объект Java. - PullRequest
0 голосов
/ 02 июля 2019

Можно ли сохранить HashMap в MongoDB / ArangoDB, где KEY HashMap - это пользовательский объект Java, а VALUE - также пользовательский объект Java.

`Class Customer {
    private String customerName;
    private String customerAddress;
    private HashMap<ContactPerson, Address> customerConacts;    
}`

`class ContactPerson {
    private String name;
    private String mailId;
}`

`class Address {
    private String houseNo;
    private String street;
}`

Здесь я хочу сохранить объект Customer в MongoDB / ArangoDB и использовать данные Spring.Можно ли хранить объекты клиентов в БД?.

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Это технически возможно, но необычно.Система попытается сериализовать ключевой объект в строку, поскольку ключ json должен быть строкой.По крайней мере Spring Data MongoDB работает таким образом.Но, например, Морфия поднимает проблему, говоря:

Карты должны быть набраны простым типом (Карта);interface java.util.Map не поддерживается как тип ключа карты, когда ключом является Map.

Так что это определенно не рекомендуемый способ.

0 голосов
/ 02 июля 2019

В ArangoDB ключи объектов / имена атрибутов должны быть строками.Таким образом, единственный способ использовать пользовательский объект в качестве ключа - это сначала сериализовать объект в строку, например, применив к объекту что-то вроде JSON.stringify().Однако это будет жизнеспособным решением только в том случае, если все члены объекта могут быть сериализованы в JSON, а результирующая сериализованная строка является относительно небольшой.Огромные ключи определенно будут влиять на производительность, поэтому я согласен с ответом @David Marko о том, что делать это не рекомендуется.

...