Ebean:关于一对多关系的条款

时间:2015-04-05 11:59:57

标签: java playframework one-to-many ebean

我有两个模型 - 作者,书籍如下图所示。 我想根据年龄找到有关作者的详细信息,并获取该作者撰写的所有未删除的书籍。

作者

@Entity
@Table(name = "author")
public class Author extends Model {

    @Id
    @Column(name = "id")
    public int id;

    @Column(name = "name")
    public String name;

    @Column(name = "age")
    public int age;

    @OneToMany(mappedBy = "book", cascade = CascadeType.ALL)
    public List<Book> books;
    private static Finder<Integer, Author> find = new Finder<Integer, Author>(Integer.class, Author.class);

    public static List<Author> findByAge(int age) {
        return find.fetch("books")
            .where()
            .eq("age", age)
            .eq("books.isDeleted", false)
            .findList(); 

}

图书实体:

@Entity
@Table(name = "book")
public class Book extends Model {

    @Id
    @Column(name = "id")
    public int id;

    @ManyToOne(targetEntity = Author.class)
    @JoinColumn(name = "author_id")
    public Author author;

    @Column(name = "name")
    public String name;

    @Column(name = "is_deleted")
    public boolean isDeleted;
}

作者实体中的查找器是否有问题。 我是否会获取所有书籍,然后在Java中过滤掉所有未删除的书籍?

提前致谢

1 个答案:

答案 0 :(得分:0)

我可以看到几个问题。你的模型应该扩展Model,你的book实体没有isDeleted字段(你可能想要一个“公共布尔删除”,并将代码更改为“books.deleted”,false)

除此之外,它看起来应该有效。