hibernate配置聯合主鍵


配置聯合主鍵有多種方式,這里僅記錄我使用的一種。

直接上代碼

使用@IdClass,紅色標注。

package com.szy.operation.stat.model.agent.school;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table;

import com.szy.common.model.IEntity;


@Entity
@Table(name = "test_test_test")
@IdClass(AgentDaySchoolPrimaryKey.class)
public class StatAgentDaySchoolAggregate implements IEntity<Long>{

    private static final long serialVersionUID = 1L;

 @Id @Column(name = "stat_date")
    private String statDate;
    
 @Id @Column(name = "agent_id")
    private Integer agentId;  
    @Column(name = "agent_name")
    private String agentName;public String getStatDate() {
        return statDate;
    }

    public void setStatDate(String statDate) {
        this.statDate = statDate;
    }

    public Integer getAgentId() {
        return agentId;
    }

    public void setAgentId(Integer agentId) {
        this.agentId = agentId;
    }

    public String getAgentName() {
        return agentName;
    }

    public void setAgentName(String agentName) {
        this.agentName = agentName;
    }

    @Override
    public Long getId() {
        return null;
    }
    
    
}

同時主鍵類如下,重寫equal()和hashCode().

package com.szy.operation.stat.model.agent.school;

import java.io.Serializable;

import javax.persistence.Column;


public class AgentDaySchoolPrimaryKey implements Serializable{

    private static final long serialVersionUID = 1L;
    
    @Column(name = "stat_date")
    private String statDate;
    
    @Column(name = "agent_id")
    private Integer agentId;

    public String getStatDate() {
        return statDate;
    }

    public void setStatDate(String statDate) {
        this.statDate = statDate;
    }

    public Integer getAgentId() {
        return agentId;
    }

    public void setAgentId(Integer agentId) {
        this.agentId = agentId;
    }

    @Override
    public boolean equals(Object obj) {
        if(obj instanceof AgentDaySchoolPrimaryKey){  
            AgentDaySchoolPrimaryKey key = (AgentDaySchoolPrimaryKey)obj ;  
            if(this.statDate.equals(key.getStatDate()) && this.agentId.equals(key.getAgentId())){  
                return true ;  
            }  
        }  
        return false ;
    }

    @Override
    public int hashCode() {
        int result = 17;  
          result = 7 * result + (getAgentId() == null ? 0 : this.getAgentId().hashCode());  
          result = 7 * result + (getStatDate() == null ? 0 : this.getStatDate().hashCode());  
        return result;
    }
}

這樣就完成了。

記錄遇到的問題以供參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM