开发者社区> 问答> 正文

SpringBoot整合Mybatis,如果表是组合主键,怎么解决?报错

1. 我的基础Mapper如下:

public interface Mapper<T> extends BaseMapper<T>, ConditionMapper<T>,
        IdsMapper<T>,
        InsertListMapper<T>,
        RowBoundsMapper<T>,
        Marker {
}

2. mysql有张表[master], 主键是hotelid+accnt, 我的model如下:

public class Master {
    /**
     * 酒店标识
     */
    @Id
    private String hotelid;

    /**
     * accnt
     */
    @Id
    private String accnt;

    ......
}

3. 启动的时候报错:

Caused by: tk.mybatis.mapper.MapperException: 继承 deleteByIds 方法的实体类[com.sun.demo.modules.model.Master]中必须只有一个带有 @Id 注解的字段
    at tk.mybatis.mapper.provider.IdsProvider.deleteByIds(IdsProvider.java:43) ~[mapper-3.4.0.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
    at tk.mybatis.mapper.mapperhelper.MapperTemplate.setSqlSource(MapperTemplate.java:237) ~[mapper-3.4.0.jar:na]
    ... 29 common frames omitted

4. 请问: 组合主键,应该怎么解决?【前提,我的表主键必须是hotelid+accnt】

展开
收起
爱吃鱼的程序员 2020-06-08 11:12:33 1055 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    联合主键就是没有主键

    2020-06-08 11:12:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多