我没有详细说明它,因为我几乎可以肯定它是关于配置的东西,而不是与休眠版本相关的东西,但你只需要问你是否需要更多东西 =)
问题是:如果我执行这样的 HQL,可能会出现什么问题:
Query query = em.createQuery("select foo from Foo foo");
List<Foo> foos = query.getResultList();
Hibernate 检索具有 id 的 Foo 对象,但是当我在数据库中看到它们被通知时,所有其他列都为空?
想象一下 Foo 是:
@Entity
@Table(name="FOO")
public class Foo implements Serializable {
@Id
@column(name="F_ID")
private long id;
@column(name="F_COD")
private String cod;
//setters and getters
...
}
问题是,如果我稍后使用其中一个 foo 的知情 id 执行此操作,它也不会获得整个对象!:
Foo f = entityManager.find(Foo.class, foo.getId());
为什么它的行为类似于 entityManager.getReference() 而不是 entityManager.find()?!
但如果我这样做:
Query query = em.createQuery("select foo.id, foo.cod from Foo foo");
List<Foo> foos = query.getResultList();
它们是丢失的列值!但结果列表有 Objects 而不是 Foos。
我要疯了,我认为它必须与配置有关。懒惰的取或类似的东西。
一些经验丰富的开发人员有一些想法?谢谢!