Springboot JPA多表查询返回自定义实体类

参考

1.实体类Question

@Entity
@ApiModel(value = "题目(单条)")
@Table(name = "question")
public class Question {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    @ApiModelProperty(value = "题目id")
    Integer id;

    @ApiModelProperty(value = "科目id")
    Integer subjectId;

    @ApiModelProperty(value = "题型")
    String questionType;

    @ApiModelProperty(value = "知识点id")
    Integer knowledgePointId;

    @ApiModelProperty(value = "上传教师id")
    Integer teacherId;

    @ApiModelProperty(value = "答案")
    String answer;

    @ApiModelProperty(value = "题干(一种题型对应一个题干)")
    String questionStem;

    @ApiModelProperty(value = "创建时间")
    Date createTime;

    @ApiModelProperty(value = "更新时间")
    Date updateTime;

    @ApiModelProperty(value = "该题目出现的试卷列表")
    @ManyToMany(mappedBy = "questionList")
    List<Paper> paperList;

    @ApiModelProperty(value = "该题目出现的题库列表")
    @ManyToMany(mappedBy = "questionList")
    List<QuestionBank> questionBankList;

    public Question() {

    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getSubjectId() {
        return subjectId;
    }

    public void setSubjectId(Integer subjectId) {
        this.subjectId = subjectId;
    }

    public String getQuestionType() {
        return questionType;
    }

    public void setQuestionType(String questionType) {
        this.questionType = questionType;
    }

    public Integer getKnowledgePointId() {
        return knowledgePointId;
    }

    public void setKnowledgePointId(Integer knowledgePointId) {
        this.knowledgePointId = knowledgePointId;
    }

    public Integer getTeacherId() {
        return teacherId;
    }

    public void setTeacherId(Integer teacherId) {
        this.teacherId = teacherId;
    }

    public String getAnswer() {
        return answer;
    }

    public void setAnswer(String answer) {
        this.answer = answer;
    }

    public String getQuestionStem() {
        return questionStem;
    }

    public void setQuestionStem(String questionStem) {
        this.questionStem = questionStem;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public List<Paper> getPaperList() {
        return paperList;
    }

    public void setPaperList(List<Paper> paperList) {
        this.paperList = paperList;
    }

    public List<QuestionBank> getQuestionBankList() {
        return questionBankList;
    }

    public void setQuestionBankList(List<QuestionBank> questionBankList) {
        this.questionBankList = questionBankList;
    }
}

2.实体类Teacher

@Entity
@ApiModel(value = "教师实体")
@Table(name = "teacher")
public class Teacher {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    @ApiModelProperty(value = "教师的id")
    Integer id;

    @ApiModelProperty(value = "姓名")
    String name;

    @ApiModelProperty(value = "教职工编号")
    String teacherNumber;

    @ApiModelProperty(value = "密码")
    String password;

    @ApiModelProperty(value = "盐值")
    String salt;

    public Teacher() {

    }

    public Teacher(String teacherNumber, String password) {
        this.teacherNumber = teacherNumber;
        this.password = password;
    }

    public static List<String> getModifiableAttributes() {
        List<String> list = new ArrayList<>();
        list.add("name");
        return list;
    }

    public void updateAttr(String attrName, String value) {
        switch (attrName) {
            case "name":
                this.name = value;
                break;
            default:
                break;
        }
    }

    public Integer getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getTeacherNumber() {
        return teacherNumber;
    }

    public void setTeacherNumber(String teacherNumber) {
        this.teacherNumber = teacherNumber;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSalt() {
        return salt;
    }

    public void setSalt(String salt) {
        this.salt = salt;
    }
}

3.查询返回的字段封装成实体类

@Entity
public class QuestionVO {
    private Integer questionId;
    private String questionStem;
    private String answer;
    private String teacherName;
    private Long id;

    public QuestionVO(Integer questionId,String questionStem,String answer,
               String teacherName){
        this.answer=answer;
        this.questionStem=questionStem;
        this.questionId=questionId;
        this.teacherName=teacherName;
    }

    public QuestionVO() {

    }

    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }

    public String getAnswer() {
        return answer;
    }

    public void setAnswer(String answer) {
        this.answer = answer;
    }

    public String getQuestionStem() {
        return questionStem;
    }

    public void setQuestionStem(String questionStem) {
        this.questionStem = questionStem;
    }

    @Id
    public Integer getQuestionId() {
        return questionId;
    }

    public void setQuestionId(Integer questionId) {
        this.questionId = questionId;
    }


}

4.在Repository中的查询语句

@Repository
public interface QuestionRepository extends JpaRepository<Question, Integer>, PagingAndSortingRepository<Question, Integer>, JpaSpecificationExecutor<Question>{
    @Query("select new QuestionVO(q.id,q.questionStem,q.answer,t.name) from Question q,Teacher t where q.teacherId=t.id"  )
    public List<QuestionVO> findAllVO();
}

但是在程序执行的时候,会自动在数据库生成空的QuestionVO表。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值