Как скопировать данные из одной таблицы в другую при весенней загрузке?

В настоящее время я делаю приложение, которое позволяет создавать учеников, а затем отмечать их как отсутствующих. Я хочу иметь возможность сделать это, добавив его в отдельную таблицу с именем 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.

Могу ли я получить помощь?

Nicholas Begg 25.03.2019 22:56

Можете ли вы показать, где вы объявляете dao и предоставляете код для этого класса?

Brandon G 25.03.2019 23:08

открытый интерфейс AbsentDao расширяет CrudRepository<AbsentStudent, Integer> { }

Nicholas Begg 25.03.2019 23:21

Я объявляю это вверху с помощью @autowired.

Nicholas Begg 25.03.2019 23:22

@autowired AbsentDao дао. (В контроллере)

Nicholas Begg 25.03.2019 23:23
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
3 619
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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 и куда его поместить?

Nicholas Begg 25.03.2019 23:24

На мой взгляд, будет лучше, если вы просто добавите новое поле в класс объектов 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();

Robert 25.03.2019 23:46

Аннотация @Modifying говорит, что этот запрос изменит некоторую таблицу в базе данных. Код, который я пишу выше, должен быть внутри интерфейса, который реализует jparepository или crudrepository (репозиторий для студентов).

Robert 25.03.2019 23:48

Атрибут nativeQuery говорит, что код внутри атрибута value написан на sql (по умолчанию это jpql).

Robert 25.03.2019 23:55

Нвм. Понятно. Спасибо!

Nicholas Begg 26.03.2019 00:49

Другие вопросы по теме