Java Ebean多目标查询

Java Ebean多目标查询,java,many-to-many,playframework-2.1,ebean,Java,Many To Many,Playframework 2.1,Ebean,我有两个班,用户和汽车。两者都有许多相互映射 用户: @实体 公共类用户扩展模型{ 私人国际年; @多个(级联=级联类型.ALL) 私家车名单; } 汽车: @实体 公车扩展模型{ @许多(mappedBy=“cars”,cascade=CascadeType.ALL) 私人名单用户; } 使用ebean,我只想查询那些1999年的汽车,它们的列表中有给用户的信息。我不想在Java代码中迭代用户的汽车列表 我没有找到任何关于多对多查询应该是什么样子的文档。所以我想这样说: public Li

我有两个班,用户和汽车。两者都有许多相互映射

用户:

@实体
公共类用户扩展模型{
私人国际年;
@多个(级联=级联类型.ALL)
私家车名单;
}
汽车:

@实体
公车扩展模型{
@许多(mappedBy=“cars”,cascade=CascadeType.ALL)
私人名单用户;
}
使用ebean,我只想查询那些1999年的汽车,它们的列表中有给用户的信息。我不想在Java代码中迭代用户的汽车列表

我没有找到任何关于多对多查询应该是什么样子的文档。所以我想这样说:

public List<Car> findCars(int year, User user) {
    return Car.find.where().eq("year", int).eq("users", user).findList();
}
公共列表findCars(整数年,用户){
return Car.find.where().eq(“year”,int).eq(“users”,user).findList();
}
Ebean是否可以这样做?

请检查类似情况

最可能的情况是,您的查找器应该如下所示:

public List<Car> findCars(int year, User user) {
    return find.where().eq("year", year).eq("users.id", user.id).findList();
}
公共列表findCars(整数年,用户){
返回find.where().eq(“year”,year).eq(“users.id”,user.id).findList();
}

顺便说一句,我假设您有一些
id
字段,但没有显示给我们。还可以将字段公开,这样就不需要为每个字段编写getter/setter。

我使用私有字段,因为在没有getter/setter的情况下测试无法正常工作。是的,对于私有字段,您需要编写公共getter,这很明显:-)但是我评论中的链接描述了我所指的Ebean/play2组合中的bug/feature。
public List<Car> findCars(int year, User user) {
    return Car.find.where().eq("year", int).eq("users", user).findList();
}
public List<Car> findCars(int year, User user) {
    return find.where().eq("year", year).eq("users.id", user.id).findList();
}