我有两个需要连接的数据库。我可以在application.conf文件中轻松地连接它们,如下所示:
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.*"
我的模型类在这些包中,DDL可以正确生成表。
问题实际上在于处理这些实体。任何不在“默认”包中的内容都会引发此错误(以使用次要数据库中的Users表为例)。
如果我尝试查询表中的所有行:
List<Users> users = Users.find.all();
它会抛出这个错误:
[PersistenceException: models.db2.Users is NOT an Entity Bean registered with this server?]
即使我100%确定用户表存在于后端,它是一个已注册的表,DDL有效并正确地创建了这个表,而且我正在导入正确的类。
我需要以某种特定的方式查询不在默认包中的模型类吗?
编辑:我意识到堆栈跟踪显示它正在尝试使用DefaultServer。我如何使它使用次要服务器?
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]
Error with [models.db2.Users] It has not been enhanced but it's superClass [class play.db.ebean.Model] is? (You are not allowed to mix enhancement in a single inheritance hierarchy) marker[play.db.ebean.Model]
错误。 - Bert B.