我想在不加载整个对象的情况下获取一对一关系的id。我以为我可以如下做到这一点使用延迟加载:休眠一对一:getId()而不提取整个对象
class Foo {
@OneToOne(fetch = FetchType.LAZY, optional = false)
private Bar bar;
}
Foo f = session.get(Foo.class, fooId); // Hibernate fetches Foo
f.getBar(); // Hibernate fetches full Bar object
f.getBar().getId(); // No further fetch, returns id
我想f.getBar()来不触发另取。我想让hibernate给我一个代理对象,它允许我调用.getId()而不实际获取Bar对象。
我在做什么错?
相同的行为.. – Rob 2010-04-07 16:14:26
它是一个休眠的bug:https://hibernate.atlassian.net/browse/HHH-3718 另请参阅比较字段或属性访问:http://stackoverflow.com/questions/594597/hibernate-annotations-which-is-更好的领域或财产访问 – GKislin 2016-10-04 21:03:55