是否可以在@ManyToOne接口中公开外键而不是整个对象

时间:2010-11-18 04:40:10

标签: hibernate jpa

@Entity public class Organization {}

@Entity public class User {
    @ManyToOne
    Organization org;
}

上述代码中的@ManyToOne interface被建模为“Organization org”,即使组织ID只存储在数据库中。我不能只将其建模为Integer orgId,以便我可以避免加载整个组织对象以保持持久性。

有时,当我们为不同的组织批量导入用户时,花费更多的时间来加载组织而不是用户持久性本身。想知道其他人如何处理这个问题。

1 个答案:

答案 0 :(得分:2)

您应该使用@ManyToOne(fetch=FetchType.LAZY)进行Hibernate延迟加载(FetchType.LAZY),以便不会加载整个Organization对象。如果你只是访问user.org.id,hibernate会知道不要加入整个表只是为了找到organization_id。

请参阅http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-hibspec-singleassoc-fetching

是的,您可以映射Integer orgId,如果这是您将在代码中使用的唯一字段。