嚣张的里拉 2024-03-27 15:18 采纳率: 30%
浏览 5

关于后端开发中数据库部分字段无法成功修改的问题

我希望实现通过id修改数据库对应字段的值的功能,主要想修改status和admin_id(admin_id是外键,连接users表格的id字段)。但是我发现运行之后status修改成功了,但是admin_id一直为空,且控制台没有报任何错误。这是什么情况呢?下面是我详细的代码以及数据库对应表:
我的cat_adoption表格:

CREATE TABLE `cat_adoption` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `cat_id` int(11) NOT NULL,
  `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `status` enum('待审核','已审核') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `publish_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `admin_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `cat_adoption_ibfk_1` (`user_id`),
  KEY `cat_adoption_ibfk_2` (`cat_id`),
  KEY `cat_adoption_ibfk_3` (`admin_id`),
  CONSTRAINT `cat_adoption_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
  CONSTRAINT `cat_adoption_ibfk_2` FOREIGN KEY (`cat_id`) REFERENCES `cat` (`id`),
  CONSTRAINT `cat_adoption_ibfk_3` FOREIGN KEY (`admin_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

我的java类:

@Data
@TableName("cat_adoption")
public class Adopt {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private Integer userId;
    private Integer adminId;
    private Integer catId;
    private String content;
    private String status;
    private LocalDateTime publishTime;
}

我的接口部分代码:

    //    更新表格内容(根据id更新状态)
    @PutMapping("/update")
    public Result update(@RequestBody Adopt adopt) {
        adoptService.updateStatusById(adopt);
        return Result.success();
    }
    public void updateStatusById(Adopt adopt) {
        adoptMapper.updateStatusById(adopt);
    }
    @Update("update `cat_adoption` set " +
            "content = #{content}, admin_id = #{adminId}," +
            " publish_time = now(), status = '已审核' " +
            "where id = #{id}")
    void updateStatusById(Adopt adopt);
  • 写回答

4条回答 默认 最新

  • 专家-皆知 2024-03-27 15:18
    关注

    引自免费微信小程序:皆我百晓生

    这个问题可能是由于在更新status字段时,没有正确地更新admin_id字段导致的。在你的updateStatusById方法中,你只是更新了status字段的值,而没有更新admin_id字段的值。

    你应该在更新status字段的同时,也更新admin_id字段的值。请尝试修改你的updateStatusById方法,如下所示:

    @Update("update `cat_adoption` set " +
            "content = #{content}, admin_id = #{adminId}," +
            " publish_time = now(), status = '已审核' " +
            "where id = #{id}")
        void updateStatusById(Adopt adopt);
    

    这样,当您更新status字段的值时,admin_id字段的值也会相应地更新。这将确保cat_adoption表中的admin_id字段与users表中的id字段保持一致。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月27日

悬赏问题

  • ¥15 关于#c语言#的问题:我在vscode和codeblocks中编写c语言时出现打不开源文件该怎么办
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询
  • ¥15 校内二手商品转让网站