通过一对多关系进行Ebean查询

我将Ebean与Play 2

Framework结合使用,并得到了两种模型:用户模型和书本模型。用户模型与书籍模型以一对多关系连接。因此,每个用户可以拥有很多书,甚至根本没有书。书籍模型本身也具有属性。现在,我想在用户模型中创建一个查询,该查询仅返回具有某些属性书的用户。例如:一个属性可能是条件,例如new或used。现在,给我所有拥有新状态书籍的用户。是否可以使用Ebean方法创建这样的查询?还是我必须使用原始SQL?

回答:

假设您有以下模型:

@Entity

public class User extends Model {

@Id

@Column(name = "user_index")

private int id;

@Column(name = "user_first_name")

private String firstName;

[...]

@OneToMany(mappedBy = "book_owner_index")

private List<Book> books;

public static Finder<Integer, User> find = new Finder<Integer, User>(Integer.class, User.class);

[...]

}

@Entity

public class Book extends Model {

@Id

@Column(name = "book_index")

private int id;

@Column(name = "book_name")

private String name;

@Column(name = "book_condition")

private String condition;

[...]

@ManyToOne

@JoinColumn(name = "book_owner_index", referencedColumnName = "user_index")

private User owner;

[...]

}

然后,您可以进行如下搜索:

List<User> users = User.find.select("*")

.fetch("books")

.where()

.eq("books.condition", "new")

.findList();

以上是 通过一对多关系进行Ebean查询 的全部内容, 来源链接: utcz.com/qa/419662.html

回到顶部