Как применить спящие аннотации к дочернему классу абстрактного класса - PullRequest
0 голосов
/ 18 января 2020

У меня есть абстрактный класс с именем Staff . Инструктор и Лектор являются производными классами от суперклассов Staff . Мне нужно использовать спящие аннотации в Инструктор и Преподаватель классы.

Персонал. java

public abstract class Staff {
    private int staffID;
    private String firstName;
    private String lastName;
    private String mobile;
    private String email;
    private double salary;
    private String city;
    private String street;

    //getters and setters
}

Это подкласс, и я снова использовал staffID в подклассе, чтобы применить аннотацию @ Id .

Лектор. java

@Entity
@Table(name = "lecturer")
public class Lecturer extends Staff {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int staffID;

    private int lectureHours;

    public int getLectureHours() {
        return lectureHours;
    }

    public void setLectureHours(int lectureHours) {
        this.lectureHours = lectureHours;
    }
}

Я использовал классы обслуживания и контроллеры и JPARepositories, как обычно. но таблица базы данных содержит только 2 поля значений (staffID и lectureHours). следующим образом.

enter image description here

LecturerRepository. java

package com.example.backend.admin.Repositories;

import com.example.backend.admin.models.Lecturer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface LecturerRepository extends JpaRepository<Lecturer, Integer> {

}

LecturerController. java

@RestController
@RequestMapping("/lecturers")
public class LecturerController {
    private static Logger logger = LoggerFactory.getLogger(LecturerController.class);
    @Autowired
    LecturerService lecturerService;

    /**
     * to insert a new lecturer
     * @param lecturer new lecturer
     * @return insert lecturer
     */
    @PostMapping("/add")
    public Lecturer addLecturer(@RequestBody Lecturer lecturer) {
        Lecturer lecturer1 = null;
        try {
            lecturer1 = lecturerService.addLecturer(lecturer);
        } catch (NullPointerException e) {
            logger.error("check the payload, null pointer is throwing", e);
        }
        return lecturer1;
    }
}

LecturerService. java

@Service
public class LecturerService {
    @Autowired
    LecturerRepository lecturerRepository;

    /**
     * to invoke save method in jpa
     * @param lecturer new lecturer
     * @return inserted lecturer
     */
    public Lecturer addLecturer(Lecturer lecturer){
        return lecturerRepository.save(lecturer);
    }
}

Я хочу добавить все поля Lecturer Класс в базу данных. Так что я должен сделать для этого?

1 Ответ

1 голос
/ 18 января 2020

Вам необходимо аннотировать абстрактный класс с помощью @MappedSuperclass, таким образом ваш класс @Entity будет наследовать все атрибуты из расширенного класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...