1

2 つの別々のデータベースをセットアップする必要があります。1 つはクラス Test 用、もう 1 つはクラス 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"


Test オブジェクトが dbone に保存され、TestTwo オブジェクトが dbtwo に保存されるように設定するにはどうすればよいですか?


編集: 要求された TestTwo クラス (特別なことはありません。application.conf ファイル以外で、手動で Ebean サーバーを割り当てませんでした):

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;
    }
}
4

2 に答える 2

0

私は同じ問題を抱えていましたが、この質問はどこでも見つけることができる唯一の関連トピックでした. それを解決するために私がしたことはあまりきれいではありませんでしたが、デフォルト以外の ebean サーバーの一部であるすべてのモデル クラスで、save()-、delete()-、および -メソッドをオーバーライドしましたupdate()。これらのオーバーライドは、それぞれsuper.save(dbname)super.delete(dbname)およびsuper.update(dbname)を呼び出します。ここdbnameで、 は ebean サーバーの名前です。

起動時に、構成から名前を引き出して保存し、ハードコードされないようにします。非常に冗長に思えますが、問題は解決しました。私のように、数年後にこの問題に迷い込んだ他の誰かに役立つことを願っています!

于 2015-02-05T22:19:32.507 に答える