Добавить две разные таблицы по одному критерию (объединить) - PullRequest
1 голос
/ 29 мая 2011

Сценарий: я хочу выбрать кандидатов из моего sql, где резюме с возможностью поиска = 1 и там город = Annistion.(резюме для поиска находится в 1 таблице, а город - в другой таблице)

Код.

Criteria  crit = session.createCriteria(CandidateResumeInfo.class);
    Disjunction disc = Restrictions.disjunction(); 

crit.add(Restrictions.eq("resumeSearchable", 1));
            crit.add(Restrictions.gt("lastUpdateDate",employerLastLoginDate));
            crit.createCriteria("candidate")
        .add(Restrictions.eq("userid",1));




    //MatchedCvsAsyncDataProvider.setRowCount(count);
    crit.setFirstResult(start);
    crit.setMaxResults(length);
    List rsList = crit.list();

// В этой строке моя программа вылетает (если я удаляю приведенную выше строку с надписью крит.createCriteria ("андидат ") .add (Restrictions.eq (" userid ", 1)); // это нормально работает)

for(Iterator it=rsList.iterator(); it.hasNext();)

    {
        candidateResumeInfo = (CandidateResumeInfo)it.next();
        candidateResumeInfo.setRowCount(2);
        allCandidateResumeInfo.add(candidateResumeInfo);

    }
    //session.close();
    return allCandidateResumeInfo;
}

Вот мои два класса, к которым я присоединяюсь

     @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 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;
private String workStatus;

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

private String joinDate;
private String lastLoginDate;

@ManyToOne
       CandidateResumeInfo candidate;

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

Это другой класс

      @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;
}
/*
public boolean isResumeDisclosure() {
    return resumeSearchable;
}
public void setResumeDisclosure(boolean resumeDisclosure) {
    this.resumeSearchable = resumeDisclosure;
}*/

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

Это мой файл Applicantioncontext.xml

             <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
             default-lazy-init="true">

             <!-- Datasource for database connection -->
             <bean id="dataSource"   class="org.springframework.jdbc.datasource.DriverManagerDataSource">
              <property name="driverClassName" value="com.mysql.jdbc.Driver" />
              <property name="url"
           value="jdbc:mysql://localhost:3306/jobsite" />
            <property name="username" value="root" />
             <property name="password" value="" />
            </bean>

           <bean id="sessionFactory"       class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
           <property name="dataSource" ref="dataSource" /> 
           <property name="annotatedClasses"> 
           <list> 
<value>com.zrsol.joblistings.shared.Employer</value> 
<value>com.zrsol.joblistings.shared.StatesProvinces</value> 
<value>com.zrsol.joblistings.shared.EmployerJobs</value> 
<value>com.zrsol.joblistings.shared.CandidateResumeInfo</value>
<value>com.zrsol.joblistings.shared.CandidateSkills</value>
<value>com.zrsol.joblistings.shared.CandidateInfo</value>

        </list> 
     </property>  
     </bean>
     <bean id ="ManagerJobs" class= "jobsite.persistence.MySQLRdbSpringHelper">
      < property name="sessionFactory" ref="sessionFactory" />
      </bean>

       </beans>

Вот трассировка стека 01: 41: 57,623 INFO SessionFactoryObjectFactory: 105 -Фабрика не привязана к JNDI, имя JNDI не настроено 01: 41: 57,624 DEBUG SessionFactoryImpl: 340 - экземплярная фабрика сеанса 01: 41: 57,625 DEBUG SessionFactoryImpl: 426 - Проверка 0 именованных запросов HQL 01: 41: 57,626 DEBUG SessionFactoryImpl: 446 - Проверка 0именованные запросы SQL 01: 41: 57,626 DEBUG DefaultListableBeanFactory: 411 - Завершено создание экземпляра компонента 'sessionFactory' 01: 41: 57,627 DEBUG DefaultListableBeanFactory: 411 - Завершено создание экземпляра компонента 'ManagerJobs '01: 41: 57,629 DEBUG SessionImpl: 247 - открытый сеанс с отметкой времени: 13066477176 01: 41: 57,631 DEBUG AbstractBatcher: 410 - собирается открыть PreparedStatement (открыть PreparedStatements: 0, глобально: 0) 01: 41: 57,631 DEBUG ConnectionManager:444 - открытие соединения JDBC 01: 41: 57 632 DEBUG DriverManagerDataSource: 163 - Создание нового соединения JDBC DriverManager с [jdbc: mysql: // localhost: 3306 / jobsite] 01: 41: 57 667 DEBUG SQL: 111 - выберите this_.lastLoginDate как y0_из Employerinfo this_, где this_.companyid =?01: 41: 57,667 ОТЛАДКА SQL: 111 - выберите this_.lastLoginDate как y0_ из списка работодателей this_, где this_.companyid =?01: 41: 57,669 DEBUG AbstractBatcher: 426 - собирается открыть ResultSet (открыть ResultSets: 0, глобально: 0) 01: 41: 57,669 DEBUG Loader: 1197 - строка результата: 01: 41: 57,670 DEBUG AbstractBatcher: 433 - собирается закрытьResultSet (открыть ResultSets: 1, глобально: 1) 01: 41: 57 670 DEBUG AbstractBatcher: 418 - собирается закрыть PreparedStatement (открыть PreparedStatements: 1, глобально: 1) 01: 41: 57 671 DEBUG StatefulPersistenceContext: 860 - инициализация не ленивых коллекций01: 41: 57,671 DEBUG ConnectionManager: 325 - транзакция завершена в сеансе в режиме сброса соединения on_close;не забудьте закрыть сеанс для освобождения ресурсов JDBC!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...