Mam 2 bazy danych, z którymi muszę się połączyć. I można łatwo podłączyć do nich w pliku application.conf tak:Wiele baz danych w Play Framework 2.1.x
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 klas modelu w tych pakietach, a to generuje DDL tabel poprawnie.
Problem polega na tym, że faktycznie pracujemy z tymi podmiotami. Coś nie w „domyślnym” pakietu rzuca ten błąd (przy użyciu tabeli użytkowników we wtórnej bazy danych jako przykład)
Gdy próbuję kwerendy wszystkie wiersze tabeli:
List<Users> users = Users.find.all();
rzuca to błąd:
[PersistenceException: models.db2.Users is NOT an Entity Bean registered with this server?]
chociaż jestem w 100% pewien, że tabela nie jest Użytkownicy w backend, że jest zarejestrowanym tabela DDL działa i sprawia, że ten stół prawidłowo, a ja importowania odpowiednich klas.
Czy istnieje sposób, w jaki należy zapytać o klasy modelu, które nie znajdują się w domyślnym pakiecie?
EDYCJA: Rozumiem, ż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]
Nikt jeszcze nie odpowiedział na twoje pytanie, więc myślę, że zamiast dodawać twoje "EDYCJA:" do twojego pytania, powinieneś po prostu zmodyfikować to, by zapytać, co naprawdę potrzebujesz. –
Zamiast używać models.db2. * W applications.conf, spróbuj umieścić models.db2.Users. – Franz
@GregKopff, Powiedziałem tylko, że EDIT, ponieważ nie byłem pewien, czy ktoś odpowiada, podczas gdy ja redagowałem pytania. –