我用Hibernate 4.2.21开始我的第一个项目,首先用JPA 2.0开始,我想创建一个关系OneToMany Unidirectional。我在Hibernate 3的版本中看到了很多例子但在4.2.21中并不多。这个例子很完美,但我不知道这是一个好习惯,我想知道其他成员的意见吗?
一对一的关系:
- 父亲模板:
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "template_id")
private Set<Variable> variables = new LinkedHashSet<Variable>();
-Child:Variable
@Column(name = "template_id", nullable = false)
Integer templateId;
答案 0 :(得分:0)
根据另一篇文章的说法。
Hibernate unidirectional one to many association - why is a join table better?
在拥有的实体中使用外键列的单向一对多并不常见,并且不是真正推荐的。我们强烈建议您使用连接表进行此类关联(如下一节中所述)。这种关联是通过@JoinColumn
来描述的@Entity
public class Customer implements Serializable {
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="CUST_ID")
public Set<Ticket> getTickets() {
...
}
@Entity
public class Ticket implements Serializable {
... //no bidir
}
单向连接表
更喜欢使用连接表的单向一对多。此关联通过@JoinTable进行描述。
@Entity
public class Trainer {
@OneToMany
@JoinTable(
name="TrainedMonkeys",
joinColumns = @JoinColumn( name="trainer_id"),
inverseJoinColumns = @JoinColumn( name="monkey_id")
)
public Set<Monkey> getTrainedMonkeys() {
...
}
@Entity
public class Monkey {
... //no bidir
}
最后,它是实现双向方法的唯一方式......是或否?