2016-06-02 3 views
9

В проекте Spring загрузки приложений, у меня есть 2 источника данных:Spring Data: отношения между 2 различными источниками данных

  • базу данных с MySQL (так называемый "DB1")
  • базы данных MongoDB (ака «db2 «)

Я использую Spring Data JPA и MongoDB Spring Data, и это работает прекрасно ... один за один раз.

Говорящие db1 обрабатывают «Игроки», а db2 обрабатывает «Команды» (со списком идентификаторов игроков). Можно ли установить связь между этими двумя гетерогенными объектами? (Т.е. @ManyToOne, @Transactional, Ленивый/Нетерпеливый и т.д.)

Например, я хочу, чтобы иметь возможность написать:

List<Player> fooPlayers = teamDao.findOneById(foo).getPlayers(); 

EDIT: Если это возможно, я хотел бы найти решение, работающее с любым проектом данных весны

+3

Как сделать это просто объяснено в [справочное руководство] (http://docs.spring.io /spring-data/data-mongo/docs/1.9.2.RELEASE/reference/html/#mongo.cross.store) –

+0

Аннотации @RelatedDocument хороши, но они работают только в одну сторону. Кроме того, он работает только с MongoDB (я собираюсь изменить свой вопрос, чтобы сказать, что мне нужно решение, которое работает с любым проектом Spring-данных) – Nicolas

+0

Не существует решения, которое работает независимо от технологии. Ваш вопрос касался Spring Data JPA и Spring Data MongoDB. Это решение четко задокументировано. Поддержка кросс-магазина в основном является общей и может быть распространена на что угодно, но для этого требуется работа с вашей стороны. –

ответ

2

К сожалению, у вашей головоломки нет решения по весенним данным.

Возможно, вы создали собственный интерфейс (DAO). Этот класс DAO будет иметь реализации для запроса обеих ваших БД. Очень грубый и короткий пример будет

your DAO 
{ 
    yourFind (id) 
    { 
     this would find in db2 and return a relevant list of objects 
     findOneByID(id) 
     get the player from the above retrieved list and query db1 
     getPlayer(player) 
    } 
} 

я надеюсь, что это указывает на вас в правильном направлении

Смежные вопросы