我需要设置2个独立的数据库。一个用于Test类,另一个用于TestTwo类,但我不知道如何配置application.conf文件。
application.conf(第1部分):
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/dbone?characterEncoding=UTF-8"
db.dbtwo.driver=com.mysql.jdbc.Driver
db.dbtwo.url="jdbc:mysql://localhost/dbtwo?characterEncoding=UTF-8"
尝试失败1:两个类都保存到数据库1(dbone):
application.conf(第2部分):
ebean.default="*"
ebean.dbtwo="models.TestTwo"
尝试失败2:尝试保存时出错:
[PersistenceException: The type [class models.TestTwo] is not a registered entity? If you don't explicitly list the entity classes to use Ebean will search for them in the classpath. If the entity is in a Jar check the ebean.search.jars property in ebean.properties file or check ServerConfig.addJar().]
application.conf(第2部分):
ebean.default="models.Test"
ebean.dbtwo="models.TestTwo"
如何进行设置以便将测试对象保存到dbone和TestTwo对象到dbtwo?
编辑:TestTwo类按要求(没什么特别的;我没有手动分配Ebean服务器,除了在application.conf文件中):
package models;
import javax.persistence.*;
import play.db.ebean.*;
import play.data.validation.Constraints.Required;
@Entity
public class TestTwo extends Model{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long id;
@Required
public String testString;
public static Model.Finder<Long, TestTwo> find = new Model.Finder<Long, TestTwo>(Long.class, TestTwo.class);
public static TestTwo create (String testString){
TestTwo test = new TestTwo();
test.testString = testString;
test.save();
return test;
}
}
答案 0 :(得分:0)
我有同样的问题,这个问题是我能在任何地方找到的唯一相关主题。我做的解决方法并不是很漂亮,但是我将所有属于非默认ebean服务器的模型类覆盖了save()
- ,delete()
- 和update()
-方法。这些覆盖分别调用super.save(dbname)
,super.delete(dbname)
和super.update(dbname)
,其中dbname
是ebean服务器的名称。
启动时,我将名称从配置中删除并保存,以便它们不会被硬编码。虽然看起来很冗余,但它解决了我的问题。我希望它可以帮助那些多年后像我一样徘徊在这个问题上的其他人!
答案 1 :(得分:0)
你写过进化脚本了吗?如果不是,您需要在conf>evolutions>default>1.sql
创建表&#39; testtwo&#39;:
create table testtwo(
id bigint auto_increment not null,
testString varchar(100) not null,
constraint t1_testTwo primary key(id)
);
此外:
SET FOREIGN_KEY_CHECKS=0;
drop table if exists testto;
SET FOREIGN_KEY_CHECKS=1;
当您刷新浏览器时,播放将询问&#34;应用evolution&#34;,这将创建&#39; testtwo&#39;数据库中的表,您可以在其中保存实体。