首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT RequestFactory:如何处理具有复合主键的实体

GWT RequestFactory:如何处理具有复合主键的实体
EN

Stack Overflow用户
提问于 2011-02-10 07:17:00
回答 1查看 1.7K关注 0票数 4

RequestFactory可以处理复合主键吗?

documentation提到实体必须实现getId();如果实体没有单个"id“字段,而有多个共同构成复合主键的外键字段,应该如何实现呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-10 10:41:56

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

使用之前发布的示例:

代码语言:javascript
复制
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();
}

如果您不能在域类型上将标识简化为单个版本属性,则可以使用Locator来提供外部定义的id和getId()属性。例如:

代码语言:javascript
复制
@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(); }
}

关于RequestFactory changes in 2.1.1,问题中链接的DevGuide有点过时

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4951735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档