【问题标题】:Ebean: How to correctly select rows where values?Ebean:如何正确选择值所在的行?
【发布时间】:2014-06-08 12:27:34
【问题描述】:

我有一个关于 Ebean 的问题。不幸的是,我找不到任何文件来帮助我。我想选择值为 true 并且 OneToMany 关系的所有成员也有一个值为 true 的所有行。

这是一个例子:

@Entity
public class Book extends Model {
  @Id
  public Long id;
  public Boolean isAvailable;

  public static Finder<Long, Book> find = new Finder<>(Long.class, Book.class);
}

我想完成 findAllByIsAvailable 方法:

@Entity
public class Category extends Model {
  @Id
  public Long id;
  public Boolean isAvailable;
  @OneToMany(mappedBy="category", cascade=CascadeType.ALL)
  public List<Book> books;

  public static Finder<Long, Category> find = new Finder<>(Long.class, Category.class);

  public static List<Category> findAllByIsAvailable() {
    // Find all categories where isAvailable == true and books.isAvailable == true
  }
}

【问题讨论】:

    标签: java sql playframework ebean


    【解决方案1】:

    首先,您需要将@ManyToOne 关系添加到您的Book 类中:

    @Entity
    public class Book extends Model {
      @Id
      public Long id;
      public Boolean isAvailable;
    
      @ManyToOne
      public Category category;
    
      public static Finder<Long, Book> find = new Finder<>(Long.class, Book.class);
    }
    

    然后你就可以在你的findAllByIsAvailable()函数中插入这个

    return Category.find.fetch("books").where().eq("isAvailable",true).eq("books.isAvailable",true).findList();
    

    .fetch("books") 表示您对两个表进行左连接。

    你可以在这里阅读很多关于 Ebean 的内容http://www.avaje.org/doc/ebean-userguide.pdf 还有一些例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      相关资源
      最近更新 更多