Function bodies 261 total
create method · java · L38-L43 (6 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherAssignmentController.java
public String create(@ModelAttribute Assignment assignment,
@AuthenticationPrincipal UserDetails user, RedirectAttributes ra) {
assignmentService.create(assignment, user.getUsername());
ra.addFlashAttribute("message", "과제가 등록되었습니다.");
return "redirect:/teacher/assignments";
}detail method · java · L49-L52 (4 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherAssignmentController.java
public String detail(@PathVariable Long id, Model model) {
model.addAttribute("detail", assignmentService.getDetailWithSubmissions(id));
return "teacher/assignments/detail";
}editForm method · java · L55-L58 (4 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherAssignmentController.java
public String editForm(@PathVariable Long id, Model model) {
model.addAttribute("assignment", assignmentService.findById(id));
return "teacher/assignments/form";
}edit method · java · L61-L66 (6 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherAssignmentController.java
public String edit(@PathVariable Long id, @ModelAttribute Assignment assignment,
RedirectAttributes ra) {
assignmentService.update(id, assignment);
ra.addFlashAttribute("message", "수정되었습니다.");
return "redirect:/teacher/assignments";
}delete method · java · L69-L73 (5 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherAssignmentController.java
public String delete(@PathVariable Long id, RedirectAttributes ra) {
assignmentService.delete(id);
ra.addFlashAttribute("message", "삭제되었습니다.");
return "redirect:/teacher/assignments";
}TeacherAttendanceController class · java · L24-L108 (85 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherAttendanceController.java
public class TeacherAttendanceController {
private final AttendanceService attendanceService;
private final StudentRepository studentRepository;
public TeacherAttendanceController(AttendanceService attendanceService,
StudentRepository studentRepository) {
this.attendanceService = attendanceService;
this.studentRepository = studentRepository;
}
/**
* 출결 조회/입력 페이지
* 학년/반/학생/날짜 선택 가능 (모두 선택사항, 학생 선택 시 개별 조회)
*/
@GetMapping
public String record(@RequestParam(required = false) Integer grade,
@RequestParam(required = false) Integer classNum,
@RequestParam(required = false) Long studentId,
@RequestParam(required = false)
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date,
Model model) {
// 날짜 기본값: 오늘
if (date == null) date = LocalDate.now();
TeacherAttendanceController method · java · L29-L33 (5 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherAttendanceController.java
public TeacherAttendanceController(AttendanceService attendanceService,
StudentRepository studentRepository) {
this.attendanceService = attendanceService;
this.studentRepository = studentRepository;
}Open data scored by Repobility · https://repobility.com
TeacherController class · java · L15-L47 (33 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherController.java
public class TeacherController {
private final StatsService statsService;
public TeacherController(StatsService statsService) {
this.statsService = statsService;
}
/**
* 선생님 대시보드 (로그인 후 진입)
* 통계 카드 + 차트 데이터 전달
*/
@GetMapping("/dashboard")
public String dashboard(Model model) {
// 기본 카운트
model.addAttribute("totalStudents", statsService.getTotalStudents());
model.addAttribute("todayAttendance", statsService.getTodayAttendanceCount());
model.addAttribute("totalLeagues", statsService.getTotalLeagues());
model.addAttribute("totalAssignments", statsService.getTotalAssignments());
// KPI 게이지 (%)
model.addAttribute("attendanceRate", statsService.getTodayAttendanceRate());
model.addAttribute("attendanceInputRate", statsService.getTodayAttendanceInputRate());
model.addAttribute("assignmentSubmitRate", statsService.getAssignmentSubmitRate());
// 차트 데이터
model.TeacherController method · java · L19-L21 (3 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherController.java
public TeacherController(StatsService statsService) {
this.statsService = statsService;
}dashboard method · java · L28-L46 (19 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherController.java
public String dashboard(Model model) {
// 기본 카운트
model.addAttribute("totalStudents", statsService.getTotalStudents());
model.addAttribute("todayAttendance", statsService.getTodayAttendanceCount());
model.addAttribute("totalLeagues", statsService.getTotalLeagues());
model.addAttribute("totalAssignments", statsService.getTotalAssignments());
// KPI 게이지 (%)
model.addAttribute("attendanceRate", statsService.getTodayAttendanceRate());
model.addAttribute("attendanceInputRate", statsService.getTodayAttendanceInputRate());
model.addAttribute("assignmentSubmitRate", statsService.getAssignmentSubmitRate());
// 차트 데이터
model.addAttribute("attendanceDist", statsService.getTodayAttendanceDistribution());
model.addAttribute("attendanceTrend", statsService.getRecent7DaysAttendanceTrend());
model.addAttribute("gradeDist", statsService.getStudentCountByGrade());
return "teacher/dashboarTeacherExcelController class · java · L21-L54 (34 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherExcelController.java
public class TeacherExcelController {
private final ExcelService excelService;
public TeacherExcelController(ExcelService excelService) {
this.excelService = excelService;
}
/** 학생 명단 엑셀 다운로드 */
@GetMapping("/students")
public ResponseEntity<byte[]> downloadStudents(@RequestParam Integer grade,
@RequestParam Integer classNum) throws IOException {
byte[] data = excelService.generateStudentListExcel(grade, classNum);
String filename = URLEncoder.encode(
grade + "학년_" + classNum + "반_학생명단.xlsx", StandardCharsets.UTF_8);
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename*=UTF-8''" + filename)
.body(data);
}
/** 점수 엑셀 다운로드 */
@GetMapping("/scores")
public ResponseEntity<bytTeacherExcelController method · java · L25-L27 (3 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherExcelController.java
public TeacherExcelController(ExcelService excelService) {
this.excelService = excelService;
}downloadStudents method · java · L31-L40 (10 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherExcelController.java
public ResponseEntity<byte[]> downloadStudents(@RequestParam Integer grade,
@RequestParam Integer classNum) throws IOException {
byte[] data = excelService.generateStudentListExcel(grade, classNum);
String filename = URLEncoder.encode(
grade + "학년_" + classNum + "반_학생명단.xlsx", StandardCharsets.UTF_8);
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename*=UTF-8''" + filename)
.body(data);
}downloadScores method · java · L44-L53 (10 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherExcelController.java
public ResponseEntity<byte[]> downloadScores(@RequestParam Integer grade,
@RequestParam Integer classNum) throws IOException {
byte[] data = excelService.generateScoreExcel(grade, classNum);
String filename = URLEncoder.encode(
grade + "학년_" + classNum + "반_점수.xlsx", StandardCharsets.UTF_8);
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename*=UTF-8''" + filename)
.body(data);
}TeacherLeagueController class · java · L22-L193 (172 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public class TeacherLeagueController {
private final LeagueService leagueService;
public TeacherLeagueController(LeagueService leagueService) {
this.leagueService = leagueService;
}
/** 대회 목록 */
@GetMapping
public String list(@AuthenticationPrincipal UserDetails user, Model model) {
model.addAttribute("leagues", leagueService.findByTeacher(user.getUsername()));
return "teacher/leagues/list";
}
/** 대회 생성 폼 */
@GetMapping("/new")
public String createForm(Model model) {
model.addAttribute("league", new League());
model.addAttribute("leagueTypes", LeagueType.values());
return "teacher/leagues/form";
}
/** 대회 생성 처리 */
@PostMapping
public String create(@ModelAttribute League league,
@RequestParam(value = "participants", required = false) List<String> participants,
@AuthenticationPrincipal UserDetails user, RedirectAttributes ra) {
Citation: Repobility (2026). State of AI-Generated Code. https://repobility.com/research/
TeacherLeagueController method · java · L26-L28 (3 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public TeacherLeagueController(LeagueService leagueService) {
this.leagueService = leagueService;
}list method · java · L32-L35 (4 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public String list(@AuthenticationPrincipal UserDetails user, Model model) {
model.addAttribute("leagues", leagueService.findByTeacher(user.getUsername()));
return "teacher/leagues/list";
}createForm method · java · L39-L43 (5 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public String createForm(Model model) {
model.addAttribute("league", new League());
model.addAttribute("leagueTypes", LeagueType.values());
return "teacher/leagues/form";
}detail method · java · L76-L108 (33 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public String detail(@PathVariable Long id, Model model) {
League league = leagueService.findById(id);
java.util.List<com.yumi.yumiclass.entity.LeagueMatch> matches = leagueService.getMatches(league);
model.addAttribute("league", league);
model.addAttribute("standings", leagueService.getStandings(league));
model.addAttribute("matches", matches);
// 토너먼트 브라켓 시각화용: 라운드별 경기 그룹핑 (TreeMap → 오름차순 유지)
java.util.Map<Integer, java.util.List<com.yumi.yumiclass.entity.LeagueMatch>> byRound =
new java.util.TreeMap<>();
int maxRound = 0;
for (com.yumi.yumiclass.entity.LeagueMatch m : matches) {
Integer r = m.getRoundNumber();
if (r == null) continue;
byRound.computeIfAbsent(r, k -> new java.util.ArrayList<>()).add(m);
if (r > maxRound) maxRound = r;
}
model.addAttribute("matchesByRound", byRound);
model.addAttribute("totalRounds", maxRound)addTeam method · java · L112-L117 (6 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public String addTeam(@PathVariable Long id, @RequestParam String teamName,
RedirectAttributes ra) {
leagueService.addTeam(id, teamName);
ra.addFlashAttribute("message", "팀이 추가되었습니다.");
return "redirect:/teacher/leagues/" + id;
}removeTeam method · java · L121-L126 (6 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public String removeTeam(@PathVariable Long id, @PathVariable Long teamId,
RedirectAttributes ra) {
leagueService.removeTeam(teamId);
ra.addFlashAttribute("message", "팀이 삭제되었습니다.");
return "redirect:/teacher/leagues/" + id;
}recordResult method · java · L150-L156 (7 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public String recordResult(@PathVariable Long id, @PathVariable Long matchId,
@RequestParam Integer homeScore, @RequestParam Integer awayScore,
RedirectAttributes ra) {
leagueService.recordMatchResult(matchId, homeScore, awayScore);
ra.addFlashAttribute("message", "경기 결과가 저장되었습니다.");
return "redirect:/teacher/leagues/" + id;
}recordResultAjax method · java · L164-L184 (21 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public java.util.Map<String, Object> recordResultAjax(
@PathVariable Long id, @PathVariable Long matchId,
@RequestParam Integer homeScore, @RequestParam Integer awayScore) {
leagueService.recordMatchResult(matchId, homeScore, awayScore);
com.yumi.yumiclass.entity.League league = leagueService.findById(id);
java.util.List<com.yumi.yumiclass.entity.LeagueMatch> matches = leagueService.getMatches(league);
java.util.List<java.util.Map<String, Object>> dtos = new java.util.ArrayList<>();
for (com.yumi.yumiclass.entity.LeagueMatch m : matches) {
java.util.Map<String, Object> dto = new java.util.HashMap<>();
dto.put("id", m.getId());
dto.put("homeTeamName", m.getHomeTeam() != null ? m.getHomeTeam().getTeamName() : null);
dto.put("awayTeamName", m.getAwayTeam() != null ? m.getAwayTeam().getTeamName() : null);
dto.put("homeScore", m.getHomeScore());
dto.putAll rows above produced by Repobility · https://repobility.com
delete method · java · L188-L192 (5 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLeagueController.java
public String delete(@PathVariable Long id, RedirectAttributes ra) {
leagueService.deleteLeague(id);
ra.addFlashAttribute("message", "대회가 삭제되었습니다.");
return "redirect:/teacher/leagues";
}TeacherLessonController class · java · L17-L66 (50 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLessonController.java
public class TeacherLessonController {
private final LessonProgressService lessonService;
public TeacherLessonController(LessonProgressService lessonService) {
this.lessonService = lessonService;
}
@GetMapping
public String list(@AuthenticationPrincipal UserDetails user, Model model) {
model.addAttribute("lessons", lessonService.findByTeacher(user.getUsername()));
return "teacher/lessons/list";
}
@GetMapping("/new")
public String createForm(Model model) {
model.addAttribute("lesson", new LessonProgress());
return "teacher/lessons/form";
}
@PostMapping
public String create(@ModelAttribute LessonProgress lesson,
@AuthenticationPrincipal UserDetails user,
RedirectAttributes ra) {
lessonService.create(lesson, user.getUsername());
ra.addFlashAttribute("message", "수업 진도가 등록되었습니다.");
return "redirect:/teacher/lessons";
}
@GTeacherLessonController method · java · L21-L23 (3 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLessonController.java
public TeacherLessonController(LessonProgressService lessonService) {
this.lessonService = lessonService;
}list method · java · L26-L29 (4 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLessonController.java
public String list(@AuthenticationPrincipal UserDetails user, Model model) {
model.addAttribute("lessons", lessonService.findByTeacher(user.getUsername()));
return "teacher/lessons/list";
}createForm method · java · L32-L35 (4 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLessonController.java
public String createForm(Model model) {
model.addAttribute("lesson", new LessonProgress());
return "teacher/lessons/form";
}create method · java · L38-L44 (7 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLessonController.java
public String create(@ModelAttribute LessonProgress lesson,
@AuthenticationPrincipal UserDetails user,
RedirectAttributes ra) {
lessonService.create(lesson, user.getUsername());
ra.addFlashAttribute("message", "수업 진도가 등록되었습니다.");
return "redirect:/teacher/lessons";
}editForm method · java · L47-L50 (4 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLessonController.java
public String editForm(@PathVariable Long id, Model model) {
model.addAttribute("lesson", lessonService.findById(id));
return "teacher/lessons/form";
}edit method · java · L53-L58 (6 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLessonController.java
public String edit(@PathVariable Long id, @ModelAttribute LessonProgress lesson,
RedirectAttributes ra) {
lessonService.update(id, lesson);
ra.addFlashAttribute("message", "수업 진도가 수정되었습니다.");
return "redirect:/teacher/lessons";
}Methodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
delete method · java · L61-L65 (5 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherLessonController.java
public String delete(@PathVariable Long id, RedirectAttributes ra) {
lessonService.delete(id);
ra.addFlashAttribute("message", "삭제되었습니다.");
return "redirect:/teacher/lessons";
}TeacherPapsController class · java · L17-L98 (82 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherPapsController.java
public class TeacherPapsController {
private final PapsService papsService;
private final StudentService studentService;
public TeacherPapsController(PapsService papsService, StudentService studentService) {
this.papsService = papsService;
this.studentService = studentService;
}
/** 학생 선택 + PAPS 기록 목록
* - grade / classNum 필터에 따라 이름 드롭다운 목록을 좁힘
* - 학년 "전체" + 반 "전체": 모든 학생
* - 학년만 선택: 해당 학년 전체
* - 학년+반 둘 다 선택: 해당 반 학생만
*/
@GetMapping
public String list(@RequestParam(required = false) Integer grade,
@RequestParam(required = false) Integer classNum,
@RequestParam(required = false) Long studentId, Model model) {
java.util.List<com.yumi.yumiclass.entity.Student> students;
if (grade != null && classNum != null) {
students = studentService.findByGradeAndClass(grade, classNum);
} else if (grade != null) {
students = studeTeacherPapsController method · java · L22-L25 (4 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherPapsController.java
public TeacherPapsController(PapsService papsService, StudentService studentService) {
this.papsService = papsService;
this.studentService = studentService;
}createForm method · java · L57-L63 (7 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherPapsController.java
public String createForm(@RequestParam Long studentId, Model model) {
model.addAttribute("paps", new Paps());
model.addAttribute("student", studentService.findById(studentId));
model.addAttribute("studentId", studentId);
model.addAttribute("papsGrades", PapsGrade.values());
return "teacher/paps/form";
}create method · java · L66-L71 (6 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherPapsController.java
public String create(@RequestParam Long studentId, @ModelAttribute Paps paps,
RedirectAttributes ra) {
papsService.create(paps, studentId);
ra.addFlashAttribute("message", "PAPS 기록이 등록되었습니다.");
return "redirect:/teacher/paps?studentId=" + studentId;
}editForm method · java · L74-L81 (8 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherPapsController.java
public String editForm(@PathVariable Long id, Model model) {
Paps paps = papsService.findById(id);
model.addAttribute("paps", paps);
model.addAttribute("student", paps.getStudent());
model.addAttribute("studentId", paps.getStudent().getId());
model.addAttribute("papsGrades", PapsGrade.values());
return "teacher/paps/form";
}edit method · java · L84-L89 (6 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherPapsController.java
public String edit(@PathVariable Long id, @ModelAttribute Paps paps,
@RequestParam Long studentId, RedirectAttributes ra) {
papsService.update(id, paps);
ra.addFlashAttribute("message", "수정되었습니다.");
return "redirect:/teacher/paps?studentId=" + studentId;
}delete method · java · L92-L97 (6 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherPapsController.java
public String delete(@PathVariable Long id, @RequestParam Long studentId,
RedirectAttributes ra) {
papsService.delete(id);
ra.addFlashAttribute("message", "삭제되었습니다.");
return "redirect:/teacher/paps?studentId=" + studentId;
}Open data scored by Repobility · https://repobility.com
TeacherScoreController class · java · L21-L152 (132 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherScoreController.java
public class TeacherScoreController {
private final ScoreService scoreService;
private final SportItemRepository sportItemRepository;
public TeacherScoreController(ScoreService scoreService, SportItemRepository sportItemRepository) {
this.scoreService = scoreService;
this.sportItemRepository = sportItemRepository;
}
/** 점수 입력/조회 페이지 */
@GetMapping
// 학년/반/종목 모두 선택 사항. 종목이 비어있으면 학생 목록만 표시
public String input(@RequestParam(required = false) Integer grade,
@RequestParam(required = false) Integer classNum,
@RequestParam(required = false) Long sportItemId,
@RequestParam(required = false) Integer year,
@RequestParam(required = false) Semester semester,
Model model) {
if (year == null) year = LocalDate.now().getYear();
if (semester == null) semester = Semester.FIRST;
model.addAttribute("sportItems", TeacherScoreController method · java · L26-L29 (4 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherScoreController.java
public TeacherScoreController(ScoreService scoreService, SportItemRepository sportItemRepository) {
this.scoreService = scoreService;
this.sportItemRepository = sportItemRepository;
}buildRedirect method · java · L143-L151 (9 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherScoreController.java
private String buildRedirect(Integer grade, Integer classNum, Long sportItemId,
Integer year, Semester semester) {
StringBuilder url = new StringBuilder("redirect:/teacher/scores?year=")
.append(year).append("&semester=").append(semester);
if (grade != null) url.append("&grade=").append(grade);
if (classNum != null) url.append("&classNum=").append(classNum);
if (sportItemId != null) url.append("&sportItemId=").append(sportItemId);
return url.toString();
}TeacherStudentController class · java · L17-L102 (86 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherStudentController.java
public class TeacherStudentController {
private final StudentService studentService;
public TeacherStudentController(StudentService studentService) {
this.studentService = studentService;
}
/** 학생 명단 목록 */
@GetMapping
public String list(@RequestParam(required = false) Integer grade,
@RequestParam(required = false) Integer classNum,
Model model) {
// 선택 값을 화면에 유지하기 위해 항상 모델에 담음
model.addAttribute("selectedGrade", grade);
model.addAttribute("selectedClass", classNum);
// 필터 조건별 조회
// - 학년+반: 해당 반만
// - 학년만: 해당 학년 전체
// - 아무것도 없음: 전체
if (grade != null && classNum != null) {
model.addAttribute("students", studentService.findByGradeAndClass(grade, classNum));
} else if (grade != null) {
model.addAttribute("students", studentService.findByGrade(grade));
} else {
model.addAttribute("students", studTeacherStudentController method · java · L21-L23 (3 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherStudentController.java
public TeacherStudentController(StudentService studentService) {
this.studentService = studentService;
}createForm method · java · L50-L54 (5 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherStudentController.java
public String createForm(Model model) {
model.addAttribute("student", new Student());
model.addAttribute("genders", Gender.values());
return "teacher/students/form";
}create method · java · L58-L69 (12 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherStudentController.java
public String create(@ModelAttribute Student student,
@RequestParam String rawPassword,
RedirectAttributes ra) {
try {
studentService.create(student, rawPassword);
ra.addFlashAttribute("message", "학생이 등록되었습니다.");
return "redirect:/teacher/students";
} catch (IllegalArgumentException e) {
ra.addFlashAttribute("error", e.getMessage());
return "redirect:/teacher/students/new";
}
}editForm method · java · L73-L77 (5 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherStudentController.java
public String editForm(@PathVariable Long id, Model model) {
model.addAttribute("student", studentService.findById(id));
model.addAttribute("genders", Gender.values());
return "teacher/students/form";
}Citation: Repobility (2026). State of AI-Generated Code. https://repobility.com/research/
delete method · java · L97-L101 (5 LOC)src/main/java/com/yumi/yumiclass/controller/TeacherStudentController.java
public String delete(@PathVariable Long id, RedirectAttributes ra) {
studentService.delete(id);
ra.addFlashAttribute("message", "학생이 삭제(비활성화) 되었습니다.");
return "redirect:/teacher/students";
}Assignment class · java · L18-L56 (39 LOC)src/main/java/com/yumi/yumiclass/entity/Assignment.java
public class Assignment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 선생님 FK
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "teacher_id", nullable = false)
private Teacher teacher;
// 과제 제목
@Column(nullable = false, length = 200)
private String title;
// 과제 내용
@Column(columnDefinition = "TEXT")
private String content;
// 제출 마감일
@Column(name = "due_date", nullable = false)
private LocalDate dueDate;
// 대상 학년
@Column(name = "target_grade", nullable = false)
private Integer targetGrade;
// 대상 반 (null이면 학년 전체)
@Column(name = "target_class")
private Integer targetClass;
@Column(name = "created_at", nullable = false, updatable = false)
private LocalDateTime createdAt;
@PrePersist
protected void onCreate() {
this.createdAt = LocalDateTime.now();
}
}onCreate method · java · L53-L55 (3 LOC)src/main/java/com/yumi/yumiclass/entity/Assignment.java
protected void onCreate() {
this.createdAt = LocalDateTime.now();
}