休眠标准单个对象加载
hibernate criteria single object load
我有两个实体(employeeTo & restTo) 是一对多的关系
在他们之间,我只想让员工 restTo 列表,但是当我加载列表时,每个对象都包含员工对象。
雇员TO
@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);
This instruction is working and show employee name
I want to not have access to employee object
我只需要加载没有 employeeTo 值的 RestTo 对象。
我该怎么做?
谢谢。
不要创建别名,它会为您的查询添加内部联接。所以而不是这个
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);
我有两个实体(employeeTo & restTo) 是一对多的关系 在他们之间,我只想让员工 restTo 列表,但是当我加载列表时,每个对象都包含员工对象。
雇员TO
@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); This instruction is working and show employee name
I want to not have access to employee object
我只需要加载没有 employeeTo 值的 RestTo 对象。 我该怎么做? 谢谢。
不要创建别名,它会为您的查询添加内部联接。所以而不是这个
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);