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条回答

    报告相同问题?

    悬赏问题

    • ¥15 flink cdc无法实时同步mysql数据
    • ¥100 有人会搭建GPT-J-6B框架吗?有偿
    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名