Spring Data JPARepository:如何有条件地获取子实体

Spring Data JPARepository:如何有条件地获取子实体,第1张

Spring Data JPARepository:如何有条件地获取子实体

如果没有调用由getContacts()导致的对象方法,则延迟获取应该正常工作。

如果您希望进行更多的人工工作,并且确实希望对此进行控制(根据使用情况,可能需要更多上下文)。我建议您从帐户实体中删除联系人,并将该帐户映射到联系人中。告诉hibernate状态忽略该字段的一种方法是使用@Transient批注对其进行映射。

@Entity@Table(name = "accounts")public class Account{    protected String accountId;    protected Collection<Contact> contacts;    @Transient    public Collection<Contact> getContacts()    {        return contacts;    }    //getters & setters}

然后在服务类中,您可以执行以下 *** 作:

public Account getAccountById(int accountId, Set<String> fetchPolicy) {    Account account = accountRepository.findOne(accountId);    if(fetchPolicy.contains("contacts")){        account.setContacts(contactRepository.findByAccountId(account.getAccountId());    }    return account;}

希望这是您想要的。顺便说一句,该代码未经测试,因此您可能应该再次检查。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5441847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存