我在作者和图书之间有多对多关系。
表:作者
id |姓名
表:分配
* ID |作者 ID |书号*
表:书
id |标题
但是我使用的不是标准的 ManyToMany 映射,我使用的是 next
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;
}
获取作者姓名的所有书籍的查询是什么?另外,获取所有书籍名称的作者姓名的查询是什么?
最佳答案
您只有两个 OneToMany 关联。您只需要在查询中使用联接,如 Hibernate documentation 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 ...
旁注:您不应该命名您的分配书籍
或作者
集合:这非常令人困惑。将其命名为分配
。
关于java - 非标准ManyToMany关系的HQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10603110/