希望在一个hibernae标准中添加两个不同的表(类)

我有代码

ArrayList<String> city = 'Anniston';

Criteria  crit = session.createCriteria(CandidateResumeInfo.class);
 crit.add(Restrictions.eq("resumeSearchable", 1));

现在我想添加下面的标准

crit.add(Restrictions.in("cities", city));

但问题在于CandidateInfo类中的城市列不在CandidateResumeInfo.class中。

任何想法如何在上面添加这个标准,以及如何在上面的标准中添加CandidateInfo类。

猜猜我需要做连接或链接这两个表,但如何,实体类中会有任何更改?

这是我的两个班

@Entity

@Table(name="candidateinfo")

public class CandidateInfo implements java.io.Serializable {

    private int id;
    private String firstName;
    private String lastName;
    private String city;
    private String stateProvince;
    private String zip;
    private String country;
    private Set candidateVideos = new HashSet();

    private String yearsOfExperience;
    private String loginName;
    private String password;
    private String address;
    private String emailAddress;
    private int passwordResetQuestionId;
    private String passwordResetAnswer;
    private String middleName;

    private String homeEveningPhone;
    private String workDayPhone;
    private boolean videoSubmited;
    private boolean resumeSubmited;
    private String cellPhone;
    private String availability=null;
    private String workStatus=null;

    private String desiredSalary=null;
    private String currentJobLevel=null;
    private String currentJobTitle=null;
    private String targetJobTitle=null;
    private String alternateTargetJobTitle1=null;
    private String alternateTargetJobTitle2=null;
    private String targetJobType=null;
    private String eventType=null;

    private String joinDate = null;
    private String lastLoginDate = null;

    //private SkillsBean skillsInfo;
    private Set skills = new HashSet();
    private Set candidateResumes = new HashSet();
    private Set targetJobCategoriesId = new HashSet();
    private Set targetJobLocationsId = new HashSet();


    public CandidateInfo() {
    }
    @Column(name="userid")
    public int getId() {
        return this.id;
    }

    @Column(name="loginname")
    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }
    @Column(name="password")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    @Column(name="address")
    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }


............................................................................

@Entity

@Table(name="candidateresumeinfo")

public class CandidateResumeInfo implements Serializable{

    private int resumeId;
    private int candidate_userId;
    private String resumeFileLocation;
    private int resumeSearchable;
    private Date lastUpdateDate;
    private String resumeTitle;
    private String resumeText;
    private String skills;
    private int rowCount;


    @Column(name="resumeSearchable")
    public int isResumeSearchable() {
        return resumeSearchable;
    }
    public void setResumeSearchable(int resumeSearchable) {
        this.resumeSearchable = resumeSearchable;
    }
    @Id 
    @GeneratedValue 
    @Column(name="resumeid")
    public int getResumeId() {
        return resumeId;
    }

    public void setResumeId(int resumeId) {
        this.resumeId = resumeId;
    }
    @Column(name="candidate_userid")
    public int getCandidate_userId() {
        return candidate_userId;
    }
    public void setCandidate_userId(int candidate_userId) {
        this.candidate_userId = candidate_userId;
    }
    @Column(name="resumelocation")
    public String getResumeFileLocation() {
        return resumeFileLocation;
    }

    public void setResumeFileLocation(String resumeFileLocation) {
        this.resumeFileLocation = resumeFileLocation;
    }

    @Column(name="resumetitle")
    public String getResumeTitle() {
        return resumeTitle;
    }
    public void setResumeTitle(String resumeTitle) {
        this.resumeTitle = resumeTitle;
    }
    @Column(name="resumetext")
    public String getResumeText() {
        return resumeText;
    }
    public void setResumeText(String resumeText) {
        this.resumeText = resumeText;
    }

    public void setLastUpdateDate(Date lastUpdateDate) {
        this.lastUpdateDate = lastUpdateDate;
    }
    @Column(name="lastUpdateDate")
    public Date getLastUpdateDate() {
        return lastUpdateDate;
    }
    @Column(name="skills")
    public String getSkills() {
        return skills;
    }

    public void setSkills(String skills) {
        this.skills = skills;
    }
    @Transient
    public int getRowCount() {
        return rowCount;
    }

    public void setRowCount(int count) {
        this.rowCount = count;
    }

谢谢


你需要添加关系像

@ManyToOne(cascade = CascadeType.ALL)
    public CandidateResumeInfo getCandidateResumeInfo () {
    return this.candidateResumeInfo ;
}

拥有从CandidateResumeInfoCandidateInfo的多对一关联。

CandidateResumeInfo类中添加新成员说,

@ManyToOne()  
@JoinColumn(name = "candidate_userId")  
private CandidateInfo candidateInfo;  

// Also add getters and setters  

现在在查询中添加一个新的别名,

crit.createAlias("candidateInfo", "candidateInfo");  
crit.add(Restrictions.in("candidateInfo.city", city));  
链接地址: http://www.djcxy.com/p/37091.html

上一篇: want to add two different tables(classes) in one hibernae criteria

下一篇: faster way to do this select query