【问题标题】:Play Framework 2.0 and EBean, wrapping INFORMATION_SCHEMA播放 Framework 2.0 和 EBean,包装 INFORMATION_SCHEMA
【发布时间】:2012-12-01 21:04:57
【问题描述】:

使用播放!框架 2.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());

            }
        });
}

单元测试执行正确,表名打印成功。

编辑: per @nico_ekito 我删除了配置文件中的进化插件并开始获取:

RuntimeException DataSource user is null 

所以,经过一番研究,我决定禁用配置文件中的其他数据源,并将我尝试与之通信的数据库移动到“db.default”和“ebean.default”,模型开始工作。如果 Play 定义了多个数据库,有没有办法告诉模型应该使用哪个数据源?通过“ebean.default="myData.JavaTable" 设置类似乎不起作用。

【问题讨论】:

    标签: java playframework-2.0 ebean


    【解决方案1】:

    您应该尝试通过在 application.conf 文件中添加以下内容来禁用进化:

    evolutionplugin=disabled
    

    测试没问题,因为您没有启动真正的应用程序,而是使用不使用进化插件的fakeApplication()

    【讨论】:

    • 我看到2.1RC2对evolutionplugin做了一些修改。我会检查一下。我可以确认禁用此功能确实会阻止创建这些表。
    【解决方案2】:

    有趣的是,我只成功地使用包级别值定义了我的 eBean 服务器(因此,“myData.*”而不是“myData.JavaTable”)。要实现这一点,您可能必须将特定 eBean 服务器的所有类移动到它们自己的包中。

    【讨论】:

    • 我最终也这样做了。不幸的是,尽管指定了单独的 Ebean 服务器,但从 Play2.1RC1 开始,evolutionplugin 仍然在 both 数据库中创建了表。
    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多