В настоящее время я делаю приложение, которое позволяет создавать учеников, а затем отмечать их как отсутствующих. Я хочу иметь возможность сделать это, добавив его в отдельную таблицу с именем AbsentStudents. Но с jparepository или crudreposotroy не дают мне этих вариантов.
Я попытался создать новую сущность, которая была бы копией сущности студента, а затем сделать дао равным findbyid студента. это выглядело так:
dao.equals(repo.findById(id));
Индекс.jsp:
<body>
<p> Add a student into the database:<p>
<form action = "addStudent">
<input type = "text" name = "ID"><br>
<input type = "text" name = "Name"><br>
<input type = "text" name = "Teacher"><br>
<input type = "submit">
</form>
<p> Mark a Student Absent<p>
<form action = "markAbsent">
<input type = "text" name = "ID"><br>
<input type = "submit">
</form>
</body>
</html>
Затем отсутствующийСтудент, который совпадает со студентом
@Entity
@Getter
@Setter
public class AbsentStudent
{
@Id
private int id;
public int getId() {
return id;
}
}
Затем я создал дао как ученика, так и отсутствующего.
Наконец, вот контроллер. Я отключил автопроводку.
@RequestMapping("/addStudent")
public String addStudent(Student student) {
repo.save(student);
return "index.jsp";
}
@RequestMapping("/markAbsent")
public ModelAndView markAbsent(@RequestParam int id) {
ModelAndView mv = new ModelAndView();
dao.equals(repo.findById(id));
mv.setViewName("absent.jsp");
mv.addObject(dao);
return mv;
}
}
Я ожидал, что в конце концов появится страница, которая выберет всех отсутствующих студентов из базы данных и разместит их на одной странице. Но я получаю страницу с ошибкой.
the data didn't copy from student to absent student.
Можете ли вы показать, где вы объявляете dao и предоставляете код для этого класса?
открытый интерфейс AbsentDao расширяет CrudRepository<AbsentStudent, Integer> { }
Я объявляю это вверху с помощью @autowired.
@autowired AbsentDao дао. (В контроллере)




I want to be able to do this by adding it into a separate table called AbsentStudents. But with the jparepository or the crudreposotroy don't give me these options.
Возможно, аннотация @Query внутри интерфейса dao (репозитория) поможет решить вашу проблему ( https://www.baeldung.com/spring-data-jpa-query )
Спасибо, но какой запрос я должен использовать для копирования из Student в AbsentStudent и куда его поместить?
На мой взгляд, будет лучше, если вы просто добавите новое поле в класс объектов Student (например, логическое значение отсутствует, NUMBER (1,0) в базе данных), и когда вы отметите какого-либо студента, вы просто обновите таблицу студентов, используя @Modifying @Query(value = "update student set absent = 1 where id = :id", nativeQuery = true) public void markAbsentStudent(@Param("id") Integer studentId); , а в тот момент, когда вам нужно будет получить всех отсутствующих студентов, вы вызовете другой запрос @Query(value = "select * from student where absent = 1", nativeQuery = true) public List<Student> getAbsentStudents();
Аннотация @Modifying говорит, что этот запрос изменит некоторую таблицу в базе данных. Код, который я пишу выше, должен быть внутри интерфейса, который реализует jparepository или crudrepository (репозиторий для студентов).
Атрибут nativeQuery говорит, что код внутри атрибута value написан на sql (по умолчанию это jpql).
Нвм. Понятно. Спасибо!
Могу ли я получить помощь?