我正在使用iBATIS在MSSQL Server上调用存储过程,输入参数是放在地图上的POJO上的属性:
Map<String, Object> saveMap = new HashMap<String, Object>();
saveMap.put("obj", myArticle);
update("save", saveMap);
Run Code Online (Sandbox Code Playgroud)
所有参数都正确设置为过程的输入,因此没有任何错误.但其中一个参数是输出参数,我期望它被设置回POJO,而是"obj.new"=false由iBATIS将一个额外的映射放到地图上.这是映射的简化版本,显示了基本思想:
    <procedure id="save">
    {<include refid="Core.returned_value" />
    CALL SPRC_ARTICLE_NAME_SAVE (
        <include refid = "Core.common_fields" />
        @pArticle_id = #obj.art_id#
    ,   @pArtname = #obj.artname#
    ,   @pNewArticleName_flg = #obj.new,mode=INOUT#
    )}
</procedure>
Run Code Online (Sandbox Code Playgroud)
调用该过程后,我在Map中传递给iBATIS的两个映射:
"obj"=POJO"obj.new"=False现在我看到iBatis文档说"当执行存储过程时 - iBATIS将为OUTPUT参数创建对象",所以它是有道理的.但我的问题是,有没有办法指示iBATIS在调用过程后将布尔值放回到POJO?我宁愿不做额外的工作,从地图中获取价值并将其设置为我自己的POJO.
//Uhlén
当我们的Swing应用程序通过Windows远程桌面将文件写入用户本地计算机时,我们的客户报告了一个非常奇怪的问题(该应用程序托管在用户连接的终端服务器上).
流程是:
C:\包含在"本地资源"中)\\tsclient\C\Temp\TestFile.txt我不确定这是核心Java库,远程桌面实现还是组合中的问题.我们的应用程序也通过Citrix托管,工作正常,写入本地磁盘或UNC网络路径也可以正常工作.
我已经创建了一个SSCCE来演示这个问题,用远程桌面连接到计算机(确保C:\是"本地资源")并运行该程序以查看一些非常奇怪的行为!我正在使用JDK-7u45.
import static java.nio.file.StandardOpenOption.APPEND;
import static java.nio.file.StandardOpenOption.CREATE;
import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING;
import static java.nio.file.StandardOpenOption.WRITE;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import java.nio.file.Files;
import java.nio.file.OpenOption;
import java.util.Collections;
/**
 * Demonstrates weird issue when writing (appending) to a file over TsClient (Microsoft Remote Desktop).
 * 
 * @author Martin
 */
public class WriteOverTsClientDemo
{
    private static final …Run Code Online (Sandbox Code Playgroud)