这是我的实体:
public class PersonItem implements Serializable{
@Id
@Column(name="col1")
private String guid;
@Column(name="col2")
private String name;
@Column(name="col3")
private String surname;
@Column(name="col4")
private Date birthDate;
//+getters and setters
}
这就是我获取人员列表的方式:
Query query = em.createQuery("Select p from PersonItem p WHERE p.guid IN (:guids)");
EntityGraph<PersonItem> eg = em.createEntityGraph(PersonItem.class);
eg.addAttributeNodes("guid");
eg.addAttributeNodes("name");
eg.addAttributeNodes("surname");
query.setHint("javax.persistence.fetchgraph", eg);
query.setParameter("guids", guids);
List<PersonItem> list=query.getResultList();
em.close();
// And now I iterate result AFTER EM CLOSE
....iterate
如果我正确理解 fetch graph,它必须只加载我指定的那些字段。但是,“birthDate”字段也被加载。此外,我看到在休眠 sql 查询中选择了 4 列。
如何解决?我使用休眠 5.1.0 作为 JPA 提供程序。