Wiele baz danych z Play Framework 2.1.x
Mam 2 bazy danych, z którymi muszę się połączyć. Mogę łatwo połączyć się z nimi w pliku application.conf w następujący sposób:
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/db1"
db.default.user=postgres
db.default.password="password"
db.secondary.driver=org.postgresql.Driver
db.secondary.url="jdbc:postgresql://localhost/db2"
db.secondary.user=postgres
db.secondary.password="password"
ebean.default="models.db1.*"
ebean.secondary="models.db2.*"
Mam swoje klasy modelu w tych pakietach i DDL generuje tabele poprawnie.
Problem polega na faktycznej współpracy z tymi podmiotami. Wszystko, co nie jest w „domyślnym” pakiecie, zgłasza ten błąd (na przykład przy użyciu tabeli Użytkownicy w dodatkowej bazie danych)
Jeśli spróbuję wysłać zapytanie do wszystkich wierszy tabeli:
List<Users> users = Users.find.all();
Zgłasza ten błąd:
[PersistenceException: models.db2.Users is NOT an Entity Bean registered with this server?]
Mimo że jestem w 100% pewien, że tabela Użytkownicy znajduje się w zapleczu, jest to zarejestrowana tabela, w której działa DDL i czyni tę tabelę właściwie, a ja importuję odpowiednie klasy.
Czy jest pewien sposób, aby zapytać klasy modelu, które nie znajdują się w pakiecie domyślnym?
EDIT: Zdaję sobie sprawę, że ślad stosu pokazuje, że próbuje użyć DefaultServer. Jak sprawić, by korzystał z serwera pomocniczego?
at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(DefaultServer.java:989) ~[avaje-ebeanorm-server.jar:na]
at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(DefaultServer.java:946) ~[avaje-ebeanorm-server.jar:na]
at com.avaje.ebeaninternal.server.core.DefaultServer.find(DefaultServer.java:982) ~[avaje-ebeanorm-server.jar:na]
at play.db.ebean.Model$Finder.all(Model.java:254) ~[play-java-ebean_2.10.jar:2.1.3]