【发布时间】:2015-10-25 11:03:08
【问题描述】:
应读取表格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??
【问题讨论】:
-
我相信那是不可能的,但相反是的,让它在需要时延迟触发它的初始化。
-
在您的
Person实体中添加到字段age注释@Basic(fetch=FetchType.LAZY)。至少试一试。 -
@PawełGłowacz 我知道这种风格,但我不喜欢它。它应该是标准的一部分,而不是实体实施的一部分。
-
不检索年龄是什么意思?线路中的字节更少?
-
@gabrielgiussi 是因为性能。年龄是按时区、夏令时、位置来计算的……比方说,计算年龄需要几秒钟。
标签: java hibernate orm lazy-loading fetch