我有一个关于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")表示您对两个表进行左连接。

您可以在这里http://www.avaje.org/doc/ebean-userguide.pdf了解更多有关Ebean的信息。
也有一些例子。

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

10-11 00:11