Критерии гибернации загрузка одного объекта - PullRequest
0 голосов
/ 30 апреля 2018

у меня есть две сущности (employeeTo & restTo), существует отношение один ко многим между ними я хочу получить список restTo сотрудника только, но когда я загружаю список, каждый из объектов содержит объект employee.

employeeTO

  @OneToMany(mappedBy = "employeeTO",cascade = CascadeType.ALL)
private List<RestTO> RestTOList=new ArrayList<>();

restTO

  @ManyToOne(fetch = FetchType.LAZY)
private EmployeeTO employeeTO;

, и вы можете увидеть мой код ниже:

  Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria=session.createCriteria(RestTo.class);
criteria.setFetchMode("employeeTO",FetchMode.SELECT);
criteria.createAlias("employeeTO","alians_employee");
Criterion condition1= Restrictions.eq("alians_employee.emID",emid);
criteria.add(condition1);
criteria.add(Restrictions.between("startDate",date1,date2));
List<RestTO> restTOS=criteria.list();
  transaction.commit();
    session.close();

System.out.println (restTOS.get (0) .getEmployeeTo.getName); Эта инструкция работает и показывает имя сотрудника

Я не хочу иметь доступ к объекту сотрудника

Мне нужно загрузить только объект RestTo без значения employeeTo. как я могу это сделать? спасибо.

1 Ответ

0 голосов
/ 30 апреля 2018

Не создавайте псевдоним, он добавляет внутреннее соединение к вашему запросу. Так что вместо этого

Criteria criteria=session.createCriteria(RestTo.class);
criteria.setFetchMode("employeeTO",FetchMode.SELECT);
criteria.createAlias("employeeTO","alians_employee");
Criterion condition1= Restrictions.eq("alians_employee.emID",emid);

Используйте это

Criteria criteria=session.createCriteria(RestTo.class);
//Default fetchmode is good,no need for that.
//criteria.setFetchMode("employeeTO",FetchMode.SELECT);
//criteria.createAlias("employeeTO","alians_employee");
Criterion condition1= Restrictions.eq("employeeTO.emID",emid);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...