Hibernate外键映射?

发布于 2024-08-10 12:39:23 字数 265 浏览 6 评论 0原文

我有一个实体 A,它具有实体 B 的外键:

entity A --> id, entity_a_name, foreign_key_entity_B 

当我调用时,

return session.createCriteria(EntityA.class).list();  

我也获得了实体 A 内的实体 B 的属性。如何使其延迟加载,以便在不需要时不会加载 enityB?

I have an entity A that has a foreign key of entity B:

entity A --> id, entity_a_name, foreign_key_entity_B 

When I call

return session.createCriteria(EntityA.class).list();  

I get the property of entityB inside entity A as well. How do I make it lazy load so it will not load enityB if not needed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏花。依旧 2024-08-17 12:39:23

从您的描述中不清楚您正在谈论什么类型的关系,但如果是多对一或一对一,事情就没那么简单了。如果 A.entityB 可为空(非可选),则 Hibernate 被迫预先加载关系以查看属性是否为空。只有将关系标记为非可选(在这种情况下,Hibernate 假设它不为 null,否则会出现错误),才能使其延迟加载。

It's unclear from your description what type of relationship you are talking about, but if it is Many-to-One or One-to-One, things aren't so straightforward. If A.entityB is nullable (non-optional) then Hibernate is forced to eager-load the relationship in order to see if the property is null. Only by marking the relationship as non-optional (in which case Hibernate assumes that it isn't null since it is an error otherwise) can you make it load lazily.

树深时见影 2024-08-17 12:39:23
  • @LazyCollection:定义@ManyToMany 上的惰性选项
    和@OneToMany 关联。
    LazyCollectionOption 可以为 TRUE
    (收藏比较懒,会
    当访问其状态时加载),
    EXTRA(收藏比较懒
    所有操作都会尝试
    避免集合加载,这
    对于巨大的情况特别有用
    加载所有时的集合
    元素不是必需的)和 FALSE
    (协会不偷懒)

  • @Fetch:定义用于加载的抓取策略
    协会。 FetchMode 可以选择
    (当
    需要加载关联),
    SUBSELECT(仅适用于
    集合,使用子选择
    策略 - 请参阅
    Hibernate 参考文档
    更多信息)或加入(使用
    SQL JOIN 加载关联
    加载所有者实体时)。加入
    覆盖任何惰性属性(as
    通过 JOIN 加载的关联
    策略不能偷懒)。

  • @LazyCollection: defines the lazyness option on @ManyToMany
    and @OneToMany associations.
    LazyCollectionOption can be TRUE
    (the collection is lazy and will be
    loaded when its state is accessed),
    EXTRA (the collection is lazy
    and all operations will try to
    avoid the collection loading, this
    is especially useful for huge
    collections when loading all the
    elements is not necessary) and FALSE
    (association not lazy)

  • @Fetch: defines the fetching strategy used to load the
    association. FetchMode can be SELECT
    (a select is triggered when the
    association needs to be loaded),
    SUBSELECT (only available for
    collections, use a subselect
    strategy - please refer to the
    Hibernate Reference Documentation for
    more information) or JOIN (use a
    SQL JOIN to load the association
    while loading the owner entity). JOIN
    overrides any lazy attribute (an as
    sociation loaded through a JOIN
    strategy cannot be lazy).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文