【发布时间】:2015-04-07 16:05:38
【问题描述】:
这里是休眠的新手。我正在构建一个简单的应用程序来使用 Hibernate,并且我掌握了大多数注释的窍门,但映射真的让我感到困惑。
我有一个Person 的班级,我有一个Note 的班级。一个人可以有许多与之关联的笔记,但单个笔记只会对应于特定的人。
我正在尝试对其进行设置,以便note 表有一个名为person_id 的列,这样我就不需要数据库中的额外person_note 表用于关联。
我将如何设置注释以便不在数据库中创建额外的表,并且我可以通过note 表中的额外列将多个注释关联到一个人?
我在谷歌上搜索后尝试了一些选项,例如使用这样的注释但没有运气:
@JoinColumn(name="id_person", nullable=false)
人物类
@Entity
@Table(name = "person")
public class Person {
@OneToMany()
private Set<Note> notes;
public Set<Note> getNotes() {
return notes;
}
public void setNotes(Set<Note> notes) {
this.notes = notes;
}
...
}
笔记类
@Entity
@Table (name = "note")
public class Note {
@ManyToOne
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
...
}
任何帮助将不胜感激。谢谢。
最终工作解决方案
为了任何展望未来的人的利益,我现在没有用于将 note 对象映射到 people 对象的单独表。最终代码(去掉了多余的行)现在看起来像这样:
人物类
@Entity
@Table(name = "person")
public class Person {
@OneToMany(fetch = FetchType.EAGER, mappedBy = "person", cascade = CascadeType.ALL)
private Set<Note> notes;
...
}
笔记类
@Entity
@Table (name = "note")
public class Note {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_person", nullable = false)
private Person person;
...
}
杂项点
【问题讨论】:
标签: java hibernate hibernate-mapping