0

我在AuthorBook之间有 ManyToMany 关系。
表:作者
ID | 姓名

表:分配
*id | 作者_id | book_id*

表:书号
| 标题

但我使用的不是标准的多对多映射,我正在使用下一个

class Book
{
   @Id
   long id;

   String title;

   @OneToMany
   List<Assign> authors;
}

class Assign
{
   @Id
   long id;

   @ManyToOne
   Book book

   @ManyToOne
   Author author;
}

class Author
{
   @Id
   long id;

   String name;

   @OneToMany
   List<Assign> books;
}  

获取作者姓名的所有书籍的查询是什么?还有什么是查询以获取作者姓名的所有书籍名称?

4

2 回答 2

1

您只需有两个 OneToMany 关联。您只需要在查询中使用连接,如Hibernate 文档 over HQL中所述。

select book from Author author 
left join author.books assign
left join assign.book book
where author.name = :name

第二个查询是相同的,除了你只想要书名:

select book.name from Author author ...

旁注:您不应该命名您的分配集合booksauthors:它非常令人困惑。命名它assigns

于 2012-05-15T14:45:28.397 回答
0

获取作者姓名的所有书籍的查询是什么?

来自 b.authors.author.name 的书 b 订单

什么是获取所有书籍名称作为作者姓名的查询?

从书 b 中选择 b.title 按 b.authors.author.name 排序

您是否在 Author 和 Book 类中交换了标题和名称?

于 2012-05-15T14:47:39.637 回答