Play!を使用する Framework2.0.4と永続層としてのEBeanデータベースの「メタ」情報をJavaクラスにラップしようとしています。
application.confでクラスをマップします。
db.myData.url="jdbc:sqlserver://localhost:2301;databaseName=myData;"
ebean.myData="models.database.JavaTable"
次に、次のようにクラスを作成しました。
package models.database;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import play.db.ebean.Model;
@Entity
@Table(name="tables",schema="INFORMATION_SCHEMA",catalog="myData")
public class JavaTable extends Model{
@Column(name="TABLE_NAME")
public String table_name;
public static Finder<String, JavaTable> find = new Finder<String, JavaTable>(
String.class, JavaTable.class
);
}
Play!を起動すると、テーブル「myData.INFORMATION_SCHEMA.tables」を作成するためにデータベースでエボリューションを実行する必要があることが通知されます。次に、単体テストを介して接続をテストしようとしました...
@Test
public void testGetTables(){
running(fakeApplication(), new Runnable() {
@Override
public void run() {
EbeanServer server = Ebean.getServer("myData");
List<SqlRow> rows = server.createSqlQuery("select * from myData.Information_Schema.Tables").findList();
for(SqlRow row: rows)
System.out.println("====>Row: " + row.toString());
}
});
}
単体テストが正しく実行され、テーブル名が正常に出力されます。
編集: @nico_ekitoごとに、構成ファイルのevolutionプラグインを削除して、次の情報を取得し始めました。
RuntimeException DataSource user is null
そこで、少し調べて、構成ファイル内の他のデータソースを無効にし、通信しようとしているデータベースを「db.default」と「ebean.default」に移動すると、モデルが機能し始めました。Playに複数のデータベースが定義されている場合に使用するデータソースをモデルに伝える方法はありますか?「ebean.default="myData.JavaTable」を介したクラスの設定は機能していないようです。