gpt4 book ai didi

java - Wso2 数据服务 - 更新操作问题

转载 作者:行者123 更新时间:2023-11-29 08:38:17 25 4
gpt4 key购买 nike

我正在尝试使用 MySQL 作为数据库的 WSO2 DataService 组件。我使用 WSO2 组件将 MySQL 数据库公开为服务,并且能够使用 WSDL 生成 Java 代码。

使用 Java CXF 客户端,我能够连接到数据库并执行 CRUD 操作。我现在最关心的是 WSO2 DSS 组件如何处理脏数据。为了测试该场景,我有以下代码:

public class TestService{

//Code to connect to service

private void callInsertOperation(HermesCompleteServicePortType port) {
((BindingProvider) port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
port.beginBoxcar();
port.insertOperation("Key1", "TestData", Double.valueOf(0.00));
try {
port.endBoxcar(null);
} catch (DataServiceFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Insert completed");
}

private void callUpdateOperation(HermesCompleteServicePortType port) {
((BindingProvider) port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
port.beginBoxcar();
port.updateOperation("Key2", "TestData1", Double.valueOf(10.00));
try {
port.endBoxcar(null);
} catch (DataServiceFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Update completed");
}

}

当满足以下条件时,问题出现在更新操作中:

  1. 更新是针对不存在的 key ,即 Key2 不存在
  2. 更新是针对旧数据的,即 key 存在但数据已过时

在这两种情况下,我假设 DataService 指示更新操作失败/引发异常/不影响任何行。但它没有给出任何指示,我还检查了 wso2 日志以查看是否有任何与此相关的消息/异常,但没有出现。

显然,更新操作后数据库表保持不变。

WSO2 DSS 如何处理这些场景?客户端如何知道更新操作是否不成功?我在代码中遗漏了什么吗?

编辑我不想使用存储过程来检查结果行的计数,如所述 here

最佳答案

显然,DSS 中没有这样的直接功能来识别更新操作是否影响任何行。您指出的两种情况不会导致 SQLException。即使我们通过 mysql(数据库)命令提示符运行,这些也会像正常更新操作一样执行。但它会显示结果为受影响的行= 0。在DSS的当前实现中,除了执行未成功之外,我们不会向客户端返回失败消息,但这里的情况并非如此。

我们将将此作为一项新功能添加到 DSS 的 future 版本中,该功能将在特定查询调用(如 INSERT/UPDATE)时返回“更新的行计数”。

关于java - Wso2 数据服务 - 更新操作问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14570254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com