хочу добавить две разные таблицы (классы) в один критерий гибернации - PullRequest
0 голосов
/ 28 мая 2011

У меня есть этот код

ArrayList<String> city = 'Anniston';

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

Теперь я хочу добавить ниже критерии

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

но проблема в том, что столбец города находится не в CandidateResumeInfo.class, а в классе CandidateInfo.

Любая идея, как добавить этот критерий в приведенный выше, как добавить класс CandidateInfo в вышеуказанные критерии.

Полагаю, мне нужно объединить или связать эти две таблицы, но как и будут ли какие-либо изменения в классах сущностей?

Это мои 2 класса

@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;
    }

Ответы [ 2 ]

1 голос
/ 13 мая 2018

Имейте связь «многие-к-одному» от CandidateResumeInfo до CandidateInfo.

Добавление нового члена в 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));  
1 голос
/ 28 мая 2011

вам нужно добавить отношение как

@ManyToOne(cascade = CascadeType.ALL)
    public CandidateResumeInfo getCandidateResumeInfo () {
    return this.candidateResumeInfo ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...