如果没有调用由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;}
希望这是您想要的。顺便说一句,该代码未经测试,因此您可能应该再次检查。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)