0

有没有办法控制用于拥有关系的获取大小?

例子 :

@PersistenceCapable
public class Employee {

  /** The contact info sets. */
  @Persistent(defaultFetchGroup = "true")
  @Element(dependent = "true")
  private Collection<ContactInfo> contactInfoSets;

  /** The key. */
  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  private Key key;

  public Collection<ContactInfo> getContactInfo() {
    return contactInfoSets;
  }

}

@PersistenceCapable
public class ContactInfo {

  /** The key. */
  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  private Key key;

}

在上面的示例中,如果我这样做:

Employee e = pm.getObjectById(Employee.class, "1");
e.getContactInfoSets();

它将获取 20 组中的每个拥有的联系人。如何告诉 jdo 在单个查询中获取所有联系人?

PS:我尝试设置pm.getFetchPlan().setFetchSize(FetchPlan.FETCH_SIZE_GREEDY);但没有成功。

4

1 回答 1

0

FetchPlan.setFetchSize 显然是供查询使用的(根据规范)。使用 GAE JDO 插件的 v2 应该加载所有关系对象,而不需要对数据库进行任何额外的调用(因为相关对象的 id 存储在拥有对象中)。该日志会告诉您进行了哪些数据存储调用

于 2012-07-27T17:23:12.710 回答