NutzCN Logo
问答 发现一个关于Record更新问题,不知道是否是bug
发布于 2452天前 作者 threefish 1840 次浏览 复制 上一个帖子 下一个帖子
标签:

发现一个关于Record更新问题,不知道是否是bug
代码1(正确生成:UPDATE ts SET test='123444' WHERE uuid=1)

 List<Record> list = new ArrayList<>();
        Record r = new Record();
        r.put(".table", "ts");
        r.set("+id", 1);
        r.set("test", "123444");
        list.add(r);
        dao.update(list);

代码2(生成:UPDATE ts SET test='123444' 丢失了where 条件)

 List<Record> list = new ArrayList<>();
        Record r = new Record();
        r.put(".table", "ts");
        r.set("+id", "1");
        r.set("test", "123444");
        list.add(r);
        dao.update(list);

请注意代码2中的+id是字符串类型,在代码1中是int

11 回复

额,算不算bug呢... 原本没打算这样写...

dao.update("xxx", Chain.make(...), Cnd.where(...))

先报个issue吧, 讨论一下

dao.update(update.getTableCode(), Chain.from(reorcd),cnd);使用这行,会自动把表名当成列名,然后报错
dao.update(reorcd,cnd);使用这行不会生成where条件,而是把cnd生成"(and aaa=bbb)"这样的set表的信息

你没给代码, 我写了一段代码来测试,是ok的

    @Test
    public void test_issue_1294() {
        dao.clear(Pet.class);
        dao.insert(Pet.create("wendal"));
        Record re = new Record();
        re.put(".table", "t_pet");
        re.put("*name", "wendal"); // t_pet的字符型主键
        re.put("age", 30);
        dao.update(re, Cnd.where("age", ">", -100));
    }

我用的65的版本,我再测试一下看看,稍后回复问题,先谢谢您了

dao.update(reorcd,cnd);
dao.update(update.getTableCode(), Chain.from(condition), cnd);
第一行不正确,第二行正确,很奇怪,我先用第二行了

第一行是record对象,第二行是普通 hashmap

你得给出具体的数据

我抽个时间把这块再整理一下,把测试数据 什么的都弄出来。看看,先上线吧,谢谢您了

添加回复
请先登陆
回到顶部