gpt4 book ai didi

java - 如何将hibernate注解应用到抽象类的子类上

转载 作者:行者123 更新时间:2023-12-02 09:06:06 26 4
gpt4 key购买 nike

我有一个名为Staff的抽象类。 InstructorLecturerStaff 父类(super class)的派生类。我需要在 InstructorLecturer 类中使用 hibernate 注释。

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;
}
}

我像往常一样使用服务类和 Controller 以及 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类的所有字段添加到数据库中。那么我应该做什么呢?

最佳答案

您需要在抽象类上添加@MappedSuperclass注解,这样您的@Entity类就会继承扩展类的所有属性。

关于java - 如何将hibernate注解应用到抽象类的子类上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com