gpt4 book ai didi

Java Spring Hibernate,运行时是否可选地执行映射?

转载 作者:行者123 更新时间:2023-12-01 08:49:06 24 4
gpt4 key购买 nike

在我的数据库中,我有一个电子邮件营销 Activity ,其中有一对多列表,列表有多对多订阅者。

我遇到的问题是,例如,当我发起 Activity 时,我并不总是想要所有订阅者(可能有很多订阅者,只想看到不同的 Activity )。

创建映射时,是否有一种方法可以选择进行映射(在运行时决定)?或者说解决问题的办法是什么?我应该从数据库中提取所有内容并输出请求的部分吗?看起来开销很大。

最佳答案

根据您描述数据模型的方式,我假设您有一些类似于以下内容的映射(请注意,我将获取类型保留为默认的 LAZY)。

@Entity
public class Campaign {
// ...
@OneToMany
private List<MailingList> lists;
}

@Entity
public class MailingList {
// ...
@ManyToMany
private List<Subscriber> subscribers;
}

@Entity
public class Subscriber {
// ...
}

如果您想要获取 Campaign 实体和关联的 MailingList 关系,您可以在 HQL/JPQL 中轻松执行此操作,如下所示:

FROM Campaign c JOIN FETCH c.lists

这将不会获取订户列表,因为@ManyToMany关联默认是惰性的,因此只有当且仅当您调用getSubscribers()

您应该始终支持在映射中使用LAZY提取,然后在查询时指定适当的联接提取,从而实现最精细的控制。

关于Java Spring Hibernate,运行时是否可选地执行映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42500229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com