我有一个关于 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/