penweizgx002 2015-07-24 08:01 采纳率: 0%
浏览 1511

Hibernate4 复合主键没法使用缓存啊

代码如下,在执行查询的时候,缓存无效果,非复合主键的都正常进入缓存

 @Embeddable 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class StudentClassesPK implements Serializable{
    private static final long serialVersionUID = 8086967036014159916L;

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "student_id",referencedColumnName="id",nullable=true)  
    private Student student;

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "classes_id",referencedColumnName="id",nullable=true )  
    private Classes classes;
    /**
     * 进入某个班级的时间
     */
    private Date startDate = new Date();

    public StudentClassesPK(){

    }

    public Student getStudent() {
        return student;
    }
    public void setStudent(Student student) {
        this.student = student;
    }
    public Classes getClasses() {
        return classes;
    }
    public void setClasses(Classes classes) {
        this.classes = classes;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((classes == null) ? 0 : classes.hashCode());
        result = prime * result + ((startDate == null) ? 0 : startDate.hashCode());
        result = prime * result + ((student == null) ? 0 : student.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        StudentClassesPK other = (StudentClassesPK) obj;
        if (classes == null) {
            if (other.classes != null)
                return false;
        } else if (!classes.equals(other.classes))
            return false;
        if (startDate == null) {
            if (other.startDate != null)
                return false;
        } else if (!startDate.equals(other.startDate))
            return false;
        if (student == null) {
            if (other.student != null)
                return false;
        } else if (!student.equals(other.student))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "StudentClassesPK [student=" + student + ", classes=" + classes + ", startDate=" + startDate + "]";
    }
}
 @Entity
@Table(name="T_ClassesStudent")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,region="com.kmp.business.entity.StudentClasses")
public class StudentClasses extends BaseEntity{
    private static final long serialVersionUID = -6300584354851171783L;

    @EmbeddedId
    StudentClassesPK pk = new StudentClassesPK();

    /**
     * 离开某个班级的时间
     */
    private Date endDate;

    public StudentClassesPK getPk() {
        return pk;
    }
    public void setPk(StudentClassesPK pk) {
        this.pk = pk;
    }

    public Date getEndDate() {
        return endDate;
    }
    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }
    @Override
    public String toString() {
        return "StudentClasses [pk=" + pk + ", endDate=" + endDate + "]";
    }

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥25 关于##爬虫##的问题,如何解决?:
    • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
    • ¥15 找一位技术过硬的游戏pj程序员
    • ¥15 matlab生成电测深三层曲线模型代码
    • ¥50 随机森林与房贷信用风险模型
    • ¥50 buildozer打包kivy app失败
    • ¥30 在vs2022里运行python代码
    • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
    • ¥15 求解 yolo算法问题
    • ¥15 虚拟机打包apk出现错误