【问题标题】:Set fetchSize for owned relationship in JDO在 JDO 中为拥有的关系设置 fetchSize
【发布时间】:2012-07-27 13:42:06
【问题描述】:

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

例子:

@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); 没有成功。

【问题讨论】:

    标签: java google-app-engine jdo


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 2019-05-06
      • 2016-02-25
      • 2012-09-27
      相关资源
      最近更新 更多