Java 关于一对多关系的where子句
我有两个模型——作者,书,如下所示。 我想根据年龄查找作者的详细信息,并获取该作者所写的所有未删除的书籍 作者Java 关于一对多关系的where子句,java,playframework,one-to-many,ebean,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 = "
@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();
}
我在作者实体中的查找器是否有问题。
我是否提取所有书籍,然后用Java过滤所有未删除的书籍
提前谢谢我可以看到一些问题。您的模型应该扩展模型,并且您的book实体没有isDeleted字段(您可能需要一个“public boolean deleted”,并将代码更改为“books.deleted”,false)
除此之外,它看起来应该可以工作。谢谢@Shanness,我已经做了上述更改。现在它把所有的书都还给我,包括那些被删除的书。我只想要那些未被删除的书。嗯,不确定,我看没问题。。我建议记录数据库调用以查看发生了什么,并确保DB行是正确的
db.default.logStatements=true logger.com.jolbox=DEBUG
参见此
@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;
}