大佬教程收集整理的这篇文章主要介绍了ManyToOne 映射和 findBySchoolId,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建教师和学校对象,其中一所学校可以有多名教师,但每位教师都在一所学校工作。我想通过将 ID 作为参数来查询,我只得到在特定学校工作的教师。
学校对象
@Getter
@Setter
@Entity
@table(name="school")
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class School {
@ID
@SequenceGenerator(
name = "school_sequence",sequencename = "school_sequence",al@R_696_5352@nSize = 1
)
@GeneratedValue(
strategy = GenerationType.SEQUENCE,generator = "school_sequence"
)
@column(name="ID")
private Long ID;
private String name;
@JsonIgnore
@OnetoMany//(mappedBy = "school")
private List<Teacher> teacher;
}
教师对象
@Getter
@Setter
@Entity
@table(name="teacher")
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Teacher {
@ID
@SequenceGenerator(
name = "teacher_sequence",sequencename = "teacher_sequence",generator = "teacher_sequence"
)
@column(name="ID")
private Long ID;
private String name;
private String email;
/* @column(name="schoolID")
private Long schoolID;*/
//(cascade = CascadeType.ALL) Don't use this! it will prevent you to have different teacher querIEs with
@manyToOne(fetch = FetchType.LAZY)
@Joincolumn(name = "schoolID",referencedcolumnname = "ID") //the same school IDs.
private School school;
}
教师控制器
@RestController
@requestMapPing(path = "API/v1/teacher")
public class TeacherController {
private final Teacherservice teacherservice;
@autowired
public TeacherController(Teacherservice teacherservicE) {
this.teacherservice = teacherservice;
}
@GetMapPing
public List<Teacher> getTeacher(){
return teacherservice.getTeacher();
}
@GetMapPing(path = "schoolID")
public List<Teacher> getTeacherBySchool(@PathVariable("schoolID") Long schoolID,School school){
return teacherservice.getTeacherBySchool(schoolID,school);
}
教师服务
@service
public class Teacherservice {
private final TeacherRepository teacherRepository;
@autowired
public Teacherservice(TeacherRepository teacherRepository) {
this.teacherRepository = teacherRepository;
}
public List<Teacher> getTeacher(){
return teacherRepository.findAll();
}
//public List<Teacher> getTeacherBySchool
我将如何在教师控制器和教师服务上实现这一点?
更新我的进度!!!
教师控制器
@GetMapPing(path = "/teachers/{schoolID}")
public List<Teacher> getTeacherBySchool(@PathVariable("schoolID") Long schoolID){
School school = new School();
school.setID(schoolID);
return teacherservice.getTeacherBySchool(school);
}
教师服务
public List<Teacher> getTeacherBySchool(Long schoolID){
return teacherRepository.findBySchool(school);
}
教师资料库
@Repository
public interface TeacherRepository extends JpaRepository<Teacher,Long> {
@query
List<Teacher> findBySchool(List<School> school);
这些改变做了我想让他们做的,但正如我所说。这不是一个好的编码习惯。我想要的是在 TeacherController 上减少代码,并使我的 Teacherservice 与 Schoolservice 通信以获得合适的学校。
我认为您可以将以下内容添加到您的存储库中:
public List<Teacher> findBySchoolId(Long schoolId);
或者自己编写查询:
entitymanager.createQuery("FROM Teacher t WHERE t.school.id = :schoolId")
.setParameter("schoolId",schoolId)
.getResultList();
以上是大佬教程为你收集整理的ManyToOne 映射和 findBySchoolId全部内容,希望文章能够帮你解决ManyToOne 映射和 findBySchoolId所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。