【问题标题】:Ebean ManyToMany queryEbean 多对多查询
【发布时间】:2012-11-16 15:31:49
【问题描述】:

我有两个类,用户和汽车。两者之间都有 ManyToMany 映射。

用户:

@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 可以做到这一点吗?

【问题讨论】:

    标签: java many-to-many playframework-2.1 ebean


    【解决方案1】:

    查看类似question (and answer)

    您的取景器很可能应该是这样的:

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

    顺便说一句,我假设您有一些 id 字段,但只是没有向我们展示。还要公开你的字段,这样你就不需要为每个字段编写 getter/setter。

    【讨论】:

    • 我使用的是私有字段,因为在没有 getter/setter 的情况下进行测试时遇到问题。 stackoverflow.com/questions/13011874/…
    • 是的,私有字段,你需要写公共的getter,这很正常
    • 显然 :-) 但我评论中的链接描述了我所指的 Ebean / Play 2 组合中的错误/功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多