4

RequestFactory 可以处理复合主键吗?

文档提到实体必须实施getId();在实体没有单个“id”字段而是具有多个共同构成复合主键的外键字段的情况下应该如何实现?

4

1 回答 1

7

在 GWT 2.1.1 中,Id 和 Version 属性可以是 RequestFactory 知道如何传输的任何类型。基本上,任何原始类型 ( int)、盒装类型 ( Integer) 或任何具有关联代理类型的对象。您不必自己将复合 id 简化为 String;RF 管道可以通过使用实体类型键的持久 id 或值类型键的序列化状态来自动处理复合键。

使用之前发布的示例:

interface Location {
  public String getDepartment();
  public String getDesk();
}

interface Employee {
  public Location getId();
  public int getVersion();
}

@ProxyFor(Location.class)
interface LocationProxy extends ValueProxy {
  // ValueProxy means no requirement for getId() / getVersion()
  String getDepartment();
  String getDesk();
}
@ProxyFor(Employee.class)
interface EmployeeProxy extends EntityProxy {
  // Use a composite type as an id key
  LocationProxy getId();
  // Version could also be a complex type
  int getVersion();
}

如果您无法将标识简化为getId()域类型上的单个属性,则可以使用 aLocator来提供外部定义的 id 和 version 属性。例如:

@ProxyFor(value = Employee.class, locator = EmployeeLocator.class)
interface EmployeeProxy {.....}

class EmployeeLocator extends Locator<Employee, String> {
  // There are several other methods to implement, too
  String getId(Employee domainObject) { return domainObject.getDepartment() + " " + domainObject.getDesk(); }
}

从问题链接的 DevGuide 对于2.1.1 中的 RequestFactory 更改有点过时

于 2011-02-10T02:41:56.250 回答