Ebean和ManyToOne提供

时间:2013-02-23 20:41:01

标签: java sql playframework-2.0 ebean

您好我需要一些帮助,了解我应该如何处理以下事项:

仅供参考,我正在使用Play framework 2.0和Ebeans版本~2.7

我有模型项目和模型报告。项目可以包含许多报告,但报告只能属于一个项目。

这是我的项目模型:

@Entity
@Table(name = "Projects")
public class Projects extends Model {
    private static final long serialVersionUID = -3343133304437498550L;

   @Id
   public long id;

   @NotNull
   @Size(min = 1, max = 255)
   public String name;

   @NotNull
   @Size(min = 1, max = 255)
   public String description;

   @Formats.DateTime(pattern = "dd/MM/yyyy")
   public Date created_at = new Date();

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

}

这是我的报告模型:

@Entity
@Table(name = "Reports")
public class Reports extends Model {
    private static final long serialVersionUID = -6617128169471038678L;

    @Id
    public long id;

    @Constraints.Required
    public String description;

    @Formats.DateTime(pattern = "dd/MM/yyyy")
    public Date created_at = new Date();

    @ManyToOne
    @NotNull
    public Projects project;

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

保存工作没有问题我可以创建一个项目,我可以创建指向正确项目的多个报告。我的问题是如何进行查询。

当我有一个项目时,我如何获得所有相关报告?我想我可以把它想象成一个简单的SQL查询,但我很确定它应该可以用ebean。

致以最诚挚的问候,谢谢您的时间!

更新 这是我用sql查询

的方法
SELECT * FROM `Projects` LEFT JOIN `Reports` ON Projects.`id` = Reports.`id`;

1 个答案:

答案 0 :(得分:4)

我现在不能尝试,但我会做这样的事情:

public class Reports extends Model {

...

  public static List<Reports> findByProject(Projects project) {
    return find.fetch("project").where().eq("project.id", project.id).findList();
  }
}