【问题标题】:Ebean persistence not working in Play 2.0Ebean 持久性在 Play 2.0 中不起作用
【发布时间】:2012-03-19 18:13:11
【问题描述】:

为了熟悉 Play 2.0 框架,我一直关注 Play 2.0 introduction tutorial。不幸的是,我无法让 Ebean 持久性工作。我的Task.java 看起来像这样:

package models;

import java.util.*;

import play.db.*;
import play.data.validation.Constraints.*;

import javax.persistence.*;

@Entity
public class Task {

    @Id 
    public Long id;

    @Required
    public String label;

    public static List<Task> all() {
        return find.all();
    }

    public static void create(Task task) {
        task.save();
    }

    public static void delete(Long id) {
        find.ref(id).delete();
    }

}

但在运行应用程序时,findsave 无法解决。我想我忘了导入一个模块,但我不知道它是哪个...

【问题讨论】:

    标签: java playframework-2.0 ebean


    【解决方案1】:

    我相信你需要扩展Model 类。

    @Entity
    public class Task extends Model {
        ....
    }
    

    希望这会有所帮助。

    【讨论】:

    • 哦,是的,我很愚蠢......但那个剂量似乎也不起作用。我收到一个错误,提示找不到 Model……我很困惑!
    • @wowpatrick 尝试导入:play.db.ebean.Model 并在 application.conf 中启用“ebean.default="models.*"” 行 - 在您提供的链接底部找到它。
    • 我错误地认为play.db.* 也会包含play.db.ebean.*。但它仍然会导致原来的错误...
    • 显然我对建议有抵抗力......我发现了问题并自己回答了这个问题。感谢您的帮助和时间!
    • @wowpatrick 如果您已经解决了问题,您应该回答并接受您的回答,以便其他人可以看到您在遇到类似问题时所做的工作。
    【解决方案2】:

    正如 Dan W. 所说,您需要扩展 Model 类:

    @Entity
    public class Task extends Model {
        ....
    }
    

    您还必须添加以下静态方法:

    public static Finder<Long,Task> find = new Finder(
        Long.class, Task.class
    );
    

    还要确保在 application.conf 文件中添加以下行以启用数据库:

    db.default.driver=org.h2.Driver
    db.default.url="jdbc:h2:mem:play"
    ebean.default="models.*"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      相关资源
      最近更新 更多