Person
表(具有name
、firstname
和age
)的每一行都应被读取。
EntityManager em = emf.createEntityManager();
Session s = (Session) em.getDelegate();
Criteria criteria = s.createCriteria(Person.class);
criteria.setFetchMode("age", FetchMode.SELECT);
但是SQL显示
Hibernate:
select
person0_.name,
person0_.firstname,
person0_.age
from
SCOPE.PERSON person0_
如何让年龄ONLY为Criteria偷懒??
最佳答案
我认为惰性模式只对关联有意义。如果您访问的是普通表,它将加载所有字段。
如果您希望 age
字段不出现在 SQL 中,因此不被加载到内存中,那么使用投影:
Criteria crit = session.createCriteria(Person.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.property("name"));
projList.add(Projections.property("firstname"));
crit.setProjection(projList);
关于java - 如何使用 Hibernate Criteria 延迟获取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31785604/