假设我有3个表,这些表由Java类表示:
ClassRoom {
int id;
int student_id;
int teacher_id;
String name;
}
Student{
int id;
String name;
}
Teacher{
int id
String name;
}
在我的代码中,我需要使用学生姓名和老师姓名,但是目前我只有他们的ID,使用休眠模式,我希望最终获得如下所示的实体:
ClassRoom {
int id
String name;
String studentName;
String teacherName;
}
我应该创建这样的类吗?或者我可以使用休眠逻辑通过其某些方法来获取此类对象列表的所有内容?我以为这项任务很普通,但是我是休眠的新手,我真的找不到很好的搜索词来在网络上找到一些好的例子。
答案 0 :(得分:0)
使用foreignKey。
ClassRoom {
int id;
@ManyToOne
@JoinColumn(name = "student_id", foreignKey = @ForeignKey(name = "fk_student"))
Student student_id;
@OneToMany
@JoinColumn(name = "teacher_id", foreignKey = @ForeignKey(name = "fk_teacher"))
Teacher teacher_id;
String name;
}
比起将其用作类,例如.getName()之类的东西而言。 it's很好的教程
答案 1 :(得分:0)
因此,在浏览了多个教程并应用DrHelmholtz后,建议我为classRoom进行了以下设置:
@Getter
@Setter
@EqualsAndHashCode(of = {"className"})
@ToString(of = {"id", "className", "student", "teacher"})
@NoArgsConstructor
@Entity(name = "Classroom")
public class ClassRoom {
@Id
@SequenceGenerator(name = "hibernateSeq", sequenceName = "HIBERNATE_SEQUENCE", allocationSize = 1)
@GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "hibernateSeq")
private Long id;
@Column(name = "class_name")
private String className;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "student_id", foreignKey = @ForeignKey(name="fk_student"))
private Student student;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "teacher_id", foreignKey = @ForeignKey(name="fk_teacher"))
private Teacher teacher;
public ClassRoom(final String className) {
this.className = className;
}
}
我想指出几个好的技巧: