hibernate 父类与子类实体保存关系

父类
@Data
public class Person{
private Integer id;
private Date insertTime;
private Date updateTime;
private Boolean name;
private String remark;

@Transient
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date timeStart;

@Transient
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date timeEnd;

@Transient
private Integer flag;

}

子类:
@Entity
@Table(name = “table_student”, schema = “库名”)
public class Student extends Person {
private int id;
private String studentName;
private Date insertTime;
private Date updateTime;
private int age;

@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Override
public Integer getId() {
    return id;
}

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

@Basic
@Column(name = "studentName")
public String getStudentName() {
    return studentName;
}

public void setStudentName(String studentName) {
    this.studentName = studentName;
}

@Basic
@Column(name = "insertTime",updatable = false)
@Override
public Date getInsertTime() {
    return insertTime;
}

@Override
public void setInsertTime(Date insertTime) {
    this.insertTime = insertTime;
}

@Basic
@Column(name = "updateTime")
@Override
public Date getUpdateTime() {
    return updateTime;
}

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

@Basic
@Column(name = "age")
public Integer getAge() {
    return age;
}

public void setType(Integer age) {
    this.age = age;
}

@Override
public boolean equals(Object o) {
    if (this == o) {
        return true;
    }
    if (o == null || getClass() != o.getClass()) {
        return false;
    }

    Student that = (Student) o;
    if (studentName != null ? !studentName.equals(that.studentName) : that.studentName != null) {
        return false;
    }

    return true;
}

@Override
public int hashCode() {
    return super.hashCode();
}

}

@Entity
@Table(name = “table_Teacher”, schema = “库名”)
public class Teacher extends Person {
private int id;
private String teacherName;
private Date insertTime;
private Date updateTime;
private String courseName;

@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Override
public Integer getId() {
    return id;
}

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

@Basic
@Column(name = "teacherName")
public String getTeacherName() {
    return teacherName;
}

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

@Basic
@Column(name = "insertTime",updatable = false)
@Override
public Date getInsertTime() {
    return insertTime;
}

@Override
public void setInsertTime(Date insertTime) {
    this.insertTime = insertTime;
}

@Basic
@Column(name = "updateTime")
@Override
public Date getUpdateTime() {
    return updateTime;
}

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

@Basic
@Column(name = "courseName")
public String getCourseName() {
    return courseName;
}

public void setCourseName(String courseName) {
    this.courseName = courseName;
}

@Override
public boolean equals(Object o) {
    if (this == o) {
        return true;
    }
    if (o == null || getClass() != o.getClass()) {
        return false;
    }

    Teacher that = (Teacher) o;
    if (teacherName != null ? !teacherName.equals(that.teacherName) : that.teacherName != null) {
        return false;
    }

    return true;
}

@Override
public int hashCode() {
    return super.hashCode();
}

}

获取实体service:
/**

  • 根据Id、type获取相应的实体
  • @param id
  • @param type
  • @return
    */
    public Person getDetailByIdAndType(int id, Integer type) {
    Person person = new Person();
    // 学生
    if (type == 1) {
    person = studentDao.getEntity(Student.class, id);
    } else if (type == 2) {
    // 老师
    person = teacherDao.getEntity(Teacher.class, id);
    }
    return person
    }

/**

  • 根据Id、type修改相应的备注内容
  • @param userInfo
  • @param id
  • @param type
  • @param remark
  • @return
    */
    public void updateRemark(Integer id, Integer type, String remark) {
    Person person = getDetailByIdAndType(id, type);
    if (!Objects.isNull(person)) {
    person.setRemark(remark);
    person.setUpdateTime(new Date());
    String beforeRemark = person.getRemark();
    //注:这边通过person就可以保存到具体的对象。比如id是学生表里的记录,则保存到学生表///对应记录的remark字段。之前没弄懂这块,导致代码写了一堆判断(冤枉路)
    personDao.update(person);
    //日志记录
    logService.save(id,beforeRemark,remark);
    }

}

springMvc控制器:
@RequestMapping(value = “/detail”)
@ResponseBody
public ModelAndView getDetail(Integer id, Integer type) {
ModelAndView view = new ModelAndView(“ui/jsp/showDetail”);
Person person = service.getDetailByIdAndType(id, type);
view.addObject(“person”, person);
view.addObject(“type”, type);
return view;
}

showDetail界面使用:

学生名:${person.studentName}
老师名:${person.teacherName}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值