假设我必须使用实体类Person和Book,它们都有一个字段名称日期(类型为java.util.Date的pe),它代表Person的出生日期和Books的发布日期,当然两者都不是独特。现在在Entity类Person中我想要一个Relation(ManyToMany)到Books,它返回在该人的出生日期发布的所有Books。这是可能的,如果是这样,我如何定义ManyToMany关系(和JointTable)? 请注意,该字段在两个实体中都称为日期,并不是唯一的。
我试过
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "test",
joinColumns = @JoinColumn(name = "date", unique=false),
inverseJoinColumns = @JoinColumn(name = "date", unique=false)
)
但它会在开始时导致异常(org.hibernate.MappingException:集合映射中的重复列)
我试过
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "test",
joinColumns = @JoinColumn(name = "date_person", unique=false),
inverseJoinColumns = @JoinColumn(name = "date_book", unique=false)
)
但它会导致创建一个空表。我一定错过了什么。
答案 0 :(得分:3)
协会的作用不是模仿这种关系。 ManyToMany不适用于具有相同名称和值的任意列。它适用于包含每个连接实体的外键的连接表。
要获取与人的出生日期在同一日期发布的所有书籍,只需执行查询:
select b from Book b where b.date = :dateOfBithOfPerson