2016-06-02 10 views
9

In einem Feder Boot-Anwendungsprojekt, I 2 Datenquellen:Spring Data: Beziehungen zwischen zwei verschiedenen Datenquellen

  • eine MySQL-Datenbank (auch bekannt als "DB1")
  • eine MongoDB Datenbank (auch bekannt als „db2 „)

ich Spring Data JPA und Spring Data MongoDB mit, und es funktioniert großartig ... einer nach dem anderen.

Angenommen, db1 handhabt "Spieler" und db2 handhabt "Teams" (mit einer Liste der Spieler-ID). Ist es möglich, die Beziehung zwischen diesen zwei heterogenen Entitäten herzustellen? (Dh @ManyToOne, @Transactional, Faul/Eager, etc.)

Zum Beispiel möchte ich in der Lage sein, zu schreiben:

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

EDIT: Wenn möglich, Ich mag würde finden Eine Lösung, die mit jedem Federdatenprojekt arbeitet

+3

Wie das zu tun, ist einfach in der [Referenzanleitung] erklärt (http://docs.spring.io /spring-data/data-mongo/docs/1.9.2.RELEASE/reference/html/#mongo.cross.store) –

+0

Die Annotation @RelatedDocument ist nett, funktioniert aber nur in einer Richtung. Außerdem funktioniert es nur mit MongoDB (ich werde meine Frage bearbeiten, um zu sagen, dass ich eine Lösung haben möchte, die mit jedem Federdatenprojekt funktioniert) – Nicolas

+0

Es gibt keine Lösung, die unabhängig von der Technologie funktioniert. Ihre Frage war über Spring Data JPA und Spring Data MongoDB. Diese Lösung ist eindeutig dokumentiert. Die Cross-Store-Unterstützung ist grundsätzlich generisch und könnte auf alles ausgedehnt werden, was jedoch Ihre Arbeit erfordert. –

Antwort

2

Leider hat Ihr Problem im Frühjahr keine Lösung.

was eine Möglichkeit sein kann ist, dass Sie eine eigene Interface (DAO) -Klasse erstellen. Diese DAO-Klasse hätte Implementierungen, um beide DBs abzufragen. Ein sehr grobes und kurzes Beispiel würde

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) 
    } 
} 

i sein hoffe, dass diese Punkte, die Sie in der richtigen Richtung

Verwandte Themen