Добавление более одного класса в критерии гибернации

У меня есть код ниже

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, а также в вышеуказанные критерии.

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

Благодарность


person junaidp    schedule 28.05.2011    source источник
comment
Можете ли вы опубликовать реализации двух классов?   -  person RAS    schedule 28.05.2011
comment
@Entity @Table(name=candidateinfo) открытый класс CandidateInfo реализует java.io.Serializable { private int id; частная строка firstName; частная строка фамилия; частный Стринг-Сити; частная строка stateProvince; закрытый почтовый индекс строки; частная строка страны; 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; }   -  person junaidp    schedule 28.05.2011


Ответы (1)


Вы не описали свои ассоциации, но я предполагаю, что это будет что-то вроде

class CandidateResumeInfo {
  @OneToOne
  CandidateInfo candidate;
}

В этом случае вам понадобится что-то вроде

ses.createCriteria(CandidateResumeInfo.class)
      .add(Restrictions.eq(...))
      .addCriteria('candidate')
      .add(Restrictions.in('cities',city);

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html

проверьте раздел об ассоциациях.

person Alex Gitelman    schedule 28.05.2011
comment
спасибо, у меня есть этот класс @Table(name=candidatResumeInfo) CandidateResumeInfo{ .... кандидаты @OneToOne CandidateInfo; .... } тогда у меня есть .. Criteria crit = session.createCriteria(CandidateResumeInfo.class); crit.add(Restrictions.eq(resumeSearchable, 1));// резюмеSearchable находится в CandidateResume crit.createCriteria(candidate) .add(Restrictions.eq(userid,1)); // идентификатор пользователя находится в списке классов CandidateInfo rsList = crit.list(); //Это следующая строка В этой строке происходит исключение и не выдается никакой ошибки - person junaidp; 29.05.2011
comment
Я был бы рад помочь вам, но, пожалуйста, отредактируйте свой вопрос и добавьте весь код в отформатированном виде. В противном случае это очень трудно расшифровать. Во-вторых, This is the next line At this line it goes to exception and not giving any error - что за исключение? Трассировки стека? Также добавьте его в вопрос. Наконец, вы заметили, что я использовал candidate, а вы говорите, что ваш класс использует имя свойства candidates? Пожалуйста, измените свой код, чтобы использовать candidates в критериях, и посмотрите, поможет ли это. - person Alex Gitelman; 29.05.2011
comment
Я поместил все и вся в ответ ниже (поскольку он не был отформатирован здесь), пожалуйста, попробуйте решить, большое спасибо за вашу заботу. - person junaidp; 29.05.2011
comment
Я ничего не вижу. Отредактируйте свой вопрос и поместите его там. Вы пробовали правильное имя candidates? - person Alex Gitelman; 29.05.2011
comment
да, я проверил вещь-кандидат, я изменил ее, никакого эффекта, я публикую новый вопрос для этого с заголовком. Добавить две разные таблицы - это единый критерий (присоединиться), пожалуйста, проверьте это. Спасибо, надеюсь услышать от вас - person junaidp; 29.05.2011