GWT RequestFactory 不持久保存附加实体

2024-01-01

我正在努力掌握新的窍门请求工厂 http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.htmlAPI 经历了一段非常艰难的时期。

我的域模型包括Staffer, a Person and an Office。 Staffer 有一个 Person 和一个 Office 作为字段。

当我尝试在服务器端将更新保存到 GWT 中的 Staffer 实例时persist()调用我看到其原始/字符串字段中的更新,但我没有看到附加的更新Person or Office对象。以下是我如何影响 GWT 端的编辑:

private void persistStafferDetails()
{
    CRMRequestFactory.StafferRequest stafferRequest = requestFactory.stafferRequest();
    staffer = stafferRequest.edit(staffer);

    PersonProxy person = staffer.getPerson();
    person.setFirstName(firstNameField.getText());
    person.setLastName(lastNameField.getText());

    staffer.setPersonalEmail(personalEmailField.getText());
    staffer.getHomeLocation().setStreetAddress(addressField1.getText());
    staffer.getHomeLocation().setCity(cityField.getText());
    staffer.getHomeLocation().setPostalCode(postalField.getText());
    staffer.getHomeLocation().setProvince(provinceDropDown.getValue(provinceDropDown.getSelectedIndex()));

    stafferRequest.persist().using(staffer).fire();
}

以下是代理:

@ProxyFor(Staffer.class)
public interface StafferProxy extends EntityProxy
{
    Long getId();

    PersonProxy getPerson();
    void setPerson(PersonProxy person);

    OfficeProxy getOffice();
    void setOffice(OfficeProxy office);

    String getHomePhone();
    void setHomePhone(String homePhone);

    String getCellPhone();
    void setCellPhone(String cellPhone);

    String getPersonalEmail();
    void setPersonalEmail(String personalEmail);

    LocationProxy getHomeLocation();
    void setHomeLocation(LocationProxy homeLocation);
}

@ProxyFor(Person.class)
public interface PersonProxy extends EntityProxy
{
    Long getId();
    void setId(Long id);

    String getFirstName();
    void setFirstName(String firstName);

    String getLastName();
    void setLastName(String lastName);
}


@ProxyFor(Office.class)
public interface OfficeProxy extends EntityProxy
{
    Long getId();

    String getName();
    void setName(String name);
}

我的 CRMRequestFactory 看起来像:

public interface CRMRequestFactory extends RequestFactory
{
  @Service(Staffer.class)
    public interface StafferRequest extends RequestContext
    {
        InstanceRequest<StafferProxy, Void> persist();
        Request<List<StafferProxy>> getAll();
        Request<StafferProxy> findStaffer(Long id);
    }
    public StafferRequest stafferRequest();

    @Service(Person.class)
    public interface PersonRequest extends RequestContext
    {
        InstanceRequest<PersonProxy, Void> persist();
        Request<List<PersonProxy>> getAll();
        Request<PersonProxy> findPerson(Long id);
    }
    public PersonRequest personRequest();

    @Service(Office.class)
    public interface OfficeRequest extends RequestContext
    {
        InstanceRequest<OfficeProxy, Void> persist();
        Request<List<OfficeProxy>> getAll();
        Request<OfficeProxy> findOffice(Long id);
    }
    public OfficeRequest officeRequest();

}

RequestFactory 不处理persist()方法就像任何特殊的东西一样,所以你必须自己实现链式持久化或配置你的 ORM 系统来为你做这件事。另一件需要检查的事情是findPerson() and findOffice()如果多次调用,方法将返回 Person 或 Office 对象的同一对象实例。如果你使用相同的EntityManager(或您的系统的等效项)在传入 HTTP 请求的整个生命周期中,通常会解决重要负载图的“丢失更新”问题。

A 博客文章 http://tbroyer.posterous.com/gwt-211-requestfactory-part-ii关于链式持久化和一个问题追踪器链接 http://code.google.com/p/google-web-toolkit/issues/detail?id=5389并进行了简短的讨论。

如果这没有帮助,您可以发布域对象的示例吗findFoo() and persist()方法?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GWT RequestFactory 不持久保存附加实体 的相关文章

  • Java - 为什么不允许 Enum 作为注释成员?

    It says 原始 String Class an Enum 另一个注释 上述任何一个的数组 只有这些类型才是合法的 Annotation 成员 为什么泛型 Enum 不能成为 Annotation 的成员 例如 Retention Re
  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 将 SignedHash 插入 PDF 中以进行外部签名过程 -workingSample

    遵循电子书第 4 3 3 节 PDF 文档的数字签名 https jira nuxeo com secure attachment 49931 digitalsignatures20130304 pdf 我正在尝试创建一个工作示例 其中 客
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐

  • jQuery:如何获取选中的单选按钮的索引

    我最近发现了一个 StackOverflow 答案 其中给出了关于如何使用 jQuery 获取选中的单选按钮的值 https stackoverflow com questions 596351 how can i get which ra
  • Bootstrap 3 RC 1 中的 typeahead JavaScript 模块在哪里?

    如您所知 Bootstrap RC 1 已经发布 我一直在阅读这个新框架中所有令人敬畏的新功能 但你猜怎么着 打字头不在文档中 有谁知道这是否是出于任何原因 I found 这些例子 http twitter github io typea
  • Java如何将2011-11-06T14:34:16.679+02:00设置为XMLGregorianCalendar

    我正在构建 JAXWS 客户端 方法之一是获取 XMLGregorianCalendar 现在我需要格式化这些数据2011 11 06T14 34 16 679 02 00设置为 XMLGregorianCalendar 如何做呢 该日期是
  • 单个 SQL Server 表上的死锁

    我正在使用 SQL Server 2008 Enterprise 并使用ADO Net C Net 3 5 ASP Net作为客户端访问数据库 当我访问 SQL Server 2008 表时 我总是从 C ADO Net 代码调用存储过程
  • 更改视频时如何运行插件/库?

    执行代码时videoJS plugin取代了HTML5视频播放器 真的很高兴 我在我之间说了我所取得的成就 但是当点击下一个视频时 即使返回到第一个视频 plugin丢失了 让我成为默认玩家HTML5 你可以检查一下jsfiddle htt
  • 左侧的 HTML 元素滚动条[重复]

    这个问题在这里已经有答案了 可能的重复 DIV 左侧垂直滚动条 https stackoverflow com questions 1455708 div vertical scroll bar on left 有没有办法使用 css 或
  • 特定数据符合时间序列的标准是什么?

    我想做的是尝试检测天气数据集是否是时间序列 我想自动化这个过程 假设我有以下数据集 df1 Heading 1 Heading 2 Heading 1 Heading 2 1 1 2023 34 12 34 2 1 2023 42 99 4
  • Python urllib3:一段时间后关闭空闲连接

    有没有办法告诉Python urllib3在一段时间后不要重用空闲连接 而是关闭它们 寻找https urllib3 readthedocs io en latest reference index html module urllib3
  • 对于制服和顶点属性来说,OpenGL 索引和位置是一样的吗?

    在 OpenGL 参考页中 some https www opengl org sdk docs man4 html glUniform xhtml函数被标记为使用统一位置 而other https www opengl org sdk d
  • Vue - 多个无线电输入,检查值?

    我在创建一个简单的民意调查生成器时学习 vue 但我在无线电输入方面遇到了问题 问题可以有两种类型之一 选择或范围 两者都是无线电输入 选择 是无线电输入单选问题 范围 是具有 1 5 个值的无线电输入问题 如下图所示 稍后我必须修复命名
  • 在“for”循环java中重新启动当前迭代

    我有一个 for 循环 要求用户输入一个数字 然后对其执行 10 次操作 我想要一个内置的检查 如果用户输入不接受的输入 循环应该重新启动当前的迭代 例如 如果用户在第 3 轮中输入错误 则应重新启动第 3 轮 我怎么做 java中有类似R
  • Unicode 数字的字符类

    我需要创建一个Pattern它将匹配所有 Unicode 数字和字母字符 到目前为止我已经 p IsAlphabetic 0 9 第一部分对我来说效果很好 它很好地将非拉丁字符识别为字母字符 问题出在后半段 显然它只适用于阿拉伯数字 字符类
  • Angular 2:模板解析错误:无法绑定到“ngModel”,因为它不是“输入”的已知属性

    当我使用双向绑定 ngModel 时收到此消息 Template parse errors Can t bind to ngModel since it isn t a known property of input 我知道导入 Forms
  • 免费 API 或类似工具可获取股票的下一个收益日期 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 API 或类似的 API 我可以在其中获取股票的下一个 即将到来的 收益日期 我已经用
  • 在播放视频/流时选择 ROI

    如果有人可以帮助我在视频流播放时选择 ROI 我不希望它暂停或捕获第一帧 我将不胜感激 我错过了什么吗 我尝试将框架设置为相同的名称 cv2 selectROI Frame frame False cv2 imshow Frame fram
  • 如何使用UISearchBar搜索MKMapView?

    我有一个应用程序需要具有类似的搜索功能 例如 Apple 地图 应用程序 iPhone iPod Touch 和 iPad 附带 有问题的功能应该不是一件难事 但我真的不知道如何在搜索栏中输入街道地址 然后获取该地址的坐标或可以帮助我实际移
  • 单击按钮刷新页面

    我想在单击按钮时刷新当前页面 使用 JavaScript 我有以下内容
  • 复制和移动习语?

    通过使用复制和交换 https stackoverflow com questions 3279543 what is the copy and swap idiom rq 1我们可以轻松地实现具有强大异常安全性的复制赋值 T operat
  • 为什么使用 Django 的collectstatic 而不是直接从静态目录提供文件?

    来自 Django 文档 部署 django contrib staticfiles 提供了方便 用于在单个目录中收集静态文件的管理命令 您可以轻松地为他们服务 将 STATIC ROOT 设置为您想要的目录 提供这些文件 例如 STATI
  • GWT RequestFactory 不持久保存附加实体

    我正在努力掌握新的窍门请求工厂 http code google com webtoolkit doc latest DevGuideRequestFactory htmlAPI 经历了一段非常艰难的时期 我的域模型包括Staffer a