java - Ebean:如何正确选择值所在的行?

标签 java sql playframework ebean

我有一个关于 Ebean 的问题。不幸的是我找不到任何文档来帮助我。我想选择值为 true 且 OneToMany 关系的所有成员也具有 true 值的所有行。

这是一个例子:

@Entity
public class Book extends Model {
  @Id
  public Long id;
  public Boolean isAvailable;

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

我想完成 findAllByIsAvailable 方法:

@Entity
public class Category extends Model {
  @Id
  public Long id;
  public Boolean isAvailable;
  @OneToMany(mappedBy="category", cascade=CascadeType.ALL)
  public List<Book> books;

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

  public static List<Category> findAllByIsAvailable() {
    // Find all categories where isAvailable == true and books.isAvailable == true
  }
}

最佳答案

首先,您需要将 @ManyToOne 关系添加到您的 Book 类,如下所示:

@Entity
public class Book extends Model {
  @Id
  public Long id;
  public Boolean isAvailable;

  @ManyToOne
  public Category category;

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

然后您将能够在 findAllByIsAvailable() 函数中插入此

return Category.find.fetch("books").where().eq("isAvailable",true).eq("books.isAvailable",true).findList();

.fetch("books") 表示您对两个表进行左连接。

您可以在此处阅读有关 Ebean 的大量内容 http://www.avaje.org/doc/ebean-userguide.pdf 还有一些例子。

关于java - Ebean:如何正确选择值所在的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24106148/

相关文章:

scala - Play Framework - 在精确的时间安排任务

java - 我可以让@OnApplicationStart 不在测试中运行吗?

java - 无法连接到数据库[默认]

java - 多个操作系统的 jnetpcap 依赖性

java - 从 Java 写入 XML 文档 - 简单

MySQL 消除 Distinct/Group By 之外的重复项

mysql - MySQL 中的 ER_NO_DEFAULT_FOR_FIELD(nodejs 休息请求)

java - droidtext 添加图像不起作用

java - 通过 "add"方法的参数创建对象在 java 中是否可接受?

sql - 使用 CAST 和 SUBSTRING 时如何在 postgresql 中过滤查询结果 (pgAdmin 4)