通过一对多关系进行Ebean查询
我将Ebean与Play 2
Framework结合使用,并得到了两种模型:用户模型和书本模型。用户模型与书籍模型以一对多关系连接。因此,每个用户可以拥有很多书,甚至根本没有书。书籍模型本身也具有属性。现在,我想在用户模型中创建一个查询,该查询仅返回具有某些属性书的用户。例如:一个属性可能是条件,例如new或used。现在,给我所有拥有新状态书籍的用户。是否可以使用Ebean方法创建这样的查询?还是我必须使用原始SQL?
回答:
假设您有以下模型:
@Entitypublic 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);
[...]
}
和
@Entitypublic 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