2013-05-31 5 views
4

Предположим, что у нас есть объекты ниже, которые необходимо хранить на карифе.Как можно связать данные о живом секторе между объектами на карте?

class A implements Serializable{ 
     public int id; 
     public List<B> incomingBs; 
     public A(int x){ this.id=x; } 
    } 

    class B implements Serializable{ 
     public int id; 
     public List<A> outgoingAs; 
     public B(int x){ this.id=x; } 
    } 
    A a1=new A(1); 
    A a2=new A(2); 
    B b1=new B(1); 
    B b2=new B(2); 
    a1.incomingBs.add(b1); 
    a1.incomingBs.add(b2); 
    b1.outgoingAs.add(a1); 
    b1.outgoingAs.add(a2); 

Тогда я поставил a1 и b1 до hazelcast карты. Как может hazelcast хранить такую ​​вложенную структуру. Если я вытащу данные: a1 из hazelcast, могу ли я получить вложенный b1? Если это так, тогда у меня должен быть доступ к a1, который содержит b1, тогда b1 имеет a1 ... тогда ..... Возможно ли это для hazelcast для выполнения сериализации для этого бесконечного вложения? Как бесконечная рекурсия.

Чтобы сделать вопрос намного проще, если я сохраню данные выше на карте яруса, могу ли я получить исходные данные с отношениями, которые я только что нажал?

+0

Я знаю, что это связано с карими, но если вы собираетесь использовать это как любой тип настойчивости, может быть проще использовать базу данных графиков, такую ​​как Neo4j, для хранения ваших данных и запроса? – Nicholas

+0

, но наш проект был урегулирован .. он использует mongodb прямо сейчас, и я могу изменить это. Тем не менее проблема решена. –

+0

Хорошо, просто подумал, что я предлагаю. Ваш случай использования кажется, что он хорошо вписывается в диаграмму, но я понимаю. – Nicholas

ответ

3

Пока все Сериализуемый, да, это работает как волшебство :)

Просто используйте transient на полях, где такое поведение не желательно.