Требуется помощь для объединения трех объектов в разных столбцах с использованием критериев Hibernate.

1

Обновленный вопрос

У меня есть 3 таблицы типа

Section (id, title, url)//id is Primary key
Category (id, title)//id is Primary key
SubCategory (id, title)//id is Primary key

Здесь я хочу присоединиться к этой таблице, как в простых запросах, таких как

Select * From Category cat, Section se, SubCategory subCat  WHERE
 subCat.id=23456  AND subCat.category=cat.id  AND subCat.section = se.id

Как я могу выполнить вышеуказанный запрос с использованием критериев в спящем режиме? Может ли кто-нибудь помочь мне в этом?

Добавление моего вопроса здесь

Мои сущности Файлы:

@Entity
@Table(name="section")
public class SectionEntity{
  private int id;
  private String title;
  //Getter & setter method
}

@Entity
@Table(name="category")
public class CategoryEntity{
  private int id;
  private String title;
  private Set<SubCategoryEntity> subCategory;
  //Getter & setter method
  @OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
  @JoinColumn(name="category", insertable=false, updatable=false)
  public Set<SubCategoryEntity> getSubCategory(){
    return this.subCategory;
  }
}

Обновлена SubCategoryEntity

@Entity
@Table(name="subcategory")
public class SubCategoryEntity{
  private int id;
  private String title;

  private Set<SectionEntity> sectionEntity;

  //Getter & setter method
  @OneToMany(fetch=FetchType.LAZY)
  @JoinColumn(name="id", insertable=false, updatable=false)
  public Set<SectionEntity> getSectionEntity(){
    this.section;
  }
}

Шаги для использования критериев Hibernate:

Шаг 1: Создание критериев для категорий категорий категорий категорийCriteria = session.createCriteria (КатегорииEntity.class, "categoryEntity");

Шаг 2: Создание псевдонимов категорий SubCategoryEntity и SectionEntityCriteria.createAlias("categoryEntity.subCategoryEntity", "subCatEntity"); КатегорииCriteria.createAlias("subCatEntity.sectionsEntity", "subCatSectionEntity");

Шаг 3. Установите свойство в списке прогнозов

Шаг 4: Добавить ограничение как: categoriesCriteria.add(Restrictions.eq("subCatEntity.id", primCategoryId));

Шаг 5: Установите свойство проекции в категории критериев категорииCriteria.setProjection(projPropList);

Шаг 6: Получение категорий результатовCriteria.list();

Мой итоговый запрос отображается как:

select this_.id as y0_, this_.title as y1_, this_.sef_url as y2_, subcatenti1_.id as y3_, subcatenti1_.title as y4_, subcatenti1_.sef_url as y5_
from jos_categories this_
inner join jos_subcategories subcatenti1_ on this_.id=subcatenti1_.category
inner join jos_sections subcatsect2_ on subcatenti1_.id=subcatsect2_.id
where subcatenti1_.id=?

Но мне нужен ожидаемый запрос:

select this_.id as y0_, this_.title as y1_, this_.sef_url as y2_, subcatenti1_.id as y3_, subcatenti1_.title as y4_, subcatenti1_.sef_url as y5_
from jos_categories this_
inner join jos_subcategories subcatenti1_ on this_.id=subcatenti1_.category
inner join jos_sections subcatsect2_ on subcatenti1_.section=subcatsect2_.id
where subcatenti1_.id=?

Как я могу достичь этого, может ли кто-нибудь помочь мне в этом?

  • 0
    Тот же вопрос на Linkedin, пожалуйста, проверьте ниже ссылки linkedin.com/groups/…
Показать ещё 5 комментариев
Теги:
hibernate
join

1 ответ

0

В вашей SubCategoryFile внести изменения, как это,

1) удалить "частный int section"; и весь метод получения и сеттера.

2) и использовать это

       @JoinColumn(name="section", insertable=false, updatable=false)
       public Set<SectionEntity> getSection(){
          this.section;
           }

а затем попробуйте запустить. Я надеюсь, что это сработает

  • 0
    эй, это тебе поможет ?? @ user1091269
  • 0
    В SectionEntity, который ссылается на таблицу разделов, нет столбца / полей раздела. Кроме того, я пропустил обновление моего SubCategoryEntity, объект SectionEntity должен быть sectinoEntity, а не section. Это была моя ошибка, которую я не могу обновить.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню