java - 如何使用 Hibernate Criteria 延迟获取字段

标签 java hibernate orm lazy-loading fetch

Person 表(具有namefirstnameage)的每一行都应被读取。

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/

相关文章:

mysql - 尝试从父表中删除时出现 SQLIntegrityConstraintViolationException(使用 Java Spring 和 MySQL)

python - 如何为一对多关系中的反向关系编写 Django ORM 查询?

java - Hibernate延迟加载修改值

java - J2ME,InputStream 在通过蓝牙接收到 40K 数据后挂断

流过滤器中的 Java 反射

java - 导入的 Maven 项目在 STS 中不起作用

java - Java 中的 map 大小不正确。如果我将 Key 和 Value 包装在 WeakReference 中,然后添加到 HashMap 中,打印的大小与预期不同

java - JPA vs ORM vs Hibernate?

java - Hibernate 中是否有 "collection-type"等价注解?

javascript - Objection.js 中的多对多关系