Hibernate相当于ActiveRecord的has_many:through

时间:2011-07-06 00:36:36

标签: java hibernate

在Rails中,可以如下声明传递关系:

class Author < ActiveRecord::Base
    has_many :authorships
    has_many :books, :through => :authorships
end

是否有可能在Hibernate中做类似的事情?当我打电话给author.getBooks()时,我希望Hibernate知道如何将作者与作者联系起来。

2 个答案:

答案 0 :(得分:2)

我不相信Hibernate的映射中有任何可以实现此目的的东西,但您可以简单地向getBooks()类添加Author方法,该方法在{{1}上调用正确的方法property:

authorships

我不确定为什么ORM需要知道B之间A和C之间的传递关系,如果你可以在它自己的课堂上设置它。

答案 1 :(得分:1)

您可以使用@ManyToMany@JoinTable来解释如何映射关系。

@ManyToMany(targetEntity = Book.class)
@JoinTable(name = "authorships",
        joinColumns = {@JoinColumn(name = "author_id")},
        inverseJoinColumns = {@JoinColumn(name = "book_id")})        
public Set<Book> books;