多对多准备查询

时间:2014-05-29 12:08:52

标签: ormlite

我正在使用ORMLite并且我有这些模型(我省略了id字段和可见性的可见性):

class Book {
    String title;
    List<Author> authors;
}

class Author {
    String name;
    List<Book> books;
}

class BookAuthor {
    @DatabaseField(foreign = true)
    Author author;
    @DatabaseField(foreign = true)
    Book book;
}

我想要查询所有书籍order_by title以及他们的作者在他们的列表中,所以我有这样的方法,第一个解决多对多,然后让书籍缩短:

 private PreparedQuery<Author> makeAuthorsForBookQuery() throws SQLException {

        QueryBuilder<BookAuthor, Integer> bookAuthorQb = bookAuthorDao.queryBuilder();
        bookAuthorQb.selectColumns("author");
        SelectArg userSelectArg = new SelectArg();
        bookAuthorQb.where().eq("", userSelectArg);

        QueryBuilder<Author, String> authorQb = authorDao.queryBuilder();
        authorQb.where().in("name", bookAuthorQb);

        return authorQb.prepare();
    }

private PreparedQuery<Book> makeBooksQuery() throws SQLException {
        QueryBuilder<Book,Integer> bookQb = bookDao.queryBuilder();
        bookDao.orderBy(Manga.TITLE_COLUMN_NAME, true);
        return bookDao.prepare();

但如果我这样做,那么我必须迭代每本书并激活AutorsForBookQuery并将结果分配给图书清单。

我的问题是:是否存在任何其他方式来获取此?我的意思是,做一个内部联接的东西,在书中自动映射作者并将其保存为PreparedQuery?

PD:我的目标是在CloseableIterator中加载这个准备好的查询

1 个答案:

答案 0 :(得分:0)

  

我希望查询所有书籍order_by title以及他们的作者列表...

我会做什么@Fran是做2个查询。一个按标题排序的Book。然后,作者的另一个查询与BookAuthor类一起使用book.id加入到您所获得的书籍列表中。所以它是2个查询,但它不是Book的另一个查询。

ORMLite肯定没有帮助你。