9

我有两个类,用户和汽车。两者都具有相互映射的多对多。

用户:

@Entity
public class User extends Model {

    private int year;

    @ManyToMany(cascade=CascadeType.ALL)
    private List<Car> cars;
}

车:

@Entity
public class Car extends Model {
    @ManyToMany(mappedBy = "cars", cascade=CascadeType.ALL )
    private List<User> users;
}

使用 ebean,我只想查询从 1999 年开始在他们的列表中给用户的那些汽车。我不想在 Java 代码中迭代用户的汽车列表。

我没有找到任何文档,多对多查询应该是什么样子。所以我会这样:

public List<Car> findCars(int year, User user) {
    return Car.find.where().eq("year", int).eq("users", user).findList();
}

Ebean 可以吗?

4

1 回答 1

13

检查类似的问题(和答案)

您的取景器很可能应该如下所示:

public List<Car> findCars(int year, User user) {
    return find.where().eq("year", year).eq("users.id", user.id).findList();
}

顺便说一句,我假设您有一些id领域,但没有向我们展示。还要公开您的字段,因此您无需为每个字段编写 getter/setter。

于 2012-11-16T15:45:47.590 回答