java小菜机一枚 2022-12-27 19:28 采纳率: 89.4%
浏览 34
已结题

关于#java#的问题,如何解决?

java: com.student.studentmanagementsystem.entity.Member中的getId()无法覆盖com.student.studentmanagementsystem.config.BaseEntity中的getId()返回类型java.lang.Long与java.lang.String不兼容

我现在遇到一个问题,因为后端是用mp自动生成的id所以长度有19位,但是js的精度只有16位,但是我数据库里的字段类型是bigint,所以我写了一个类
BaseEntity.java

@Data
public class BaseEntity implements Serializable {

    private String id;

    private String gid;

    private String sid;

    private String subjectId;

}

然后我每个实体类都继承了它

@Data
@TableName("grade")
public class Grade extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @TableField("id")
    private Long id;

    @TableField("grade_name")
    private String gradeName;

    @TableField("create_time")
    private Timestamp createTime;

    @TableField("update_time")
    private Timestamp updateTime;

}

我感觉这应该没有问题,结果还是报无法转换类型,所以有没有会的给我提提建议,谢谢了!

  • 写回答

4条回答 默认 最新

  • |__WhoAmI__| 2022-12-27 19:39
    关注

    在 Grade 类中,你声明了一个名为 id 的字段,类型为 Long。这个字段和你从 BaseEntity 继承过来的 id 字段同名,但是类型不同。

    Java 的继承机制要求,子类中的方法必须与父类中的方法具有相同的名称和参数类型,返回类型可以不同。但是你在 Grade 类中声明了一个 id 字段,它和从 BaseEntity 继承过来的 id 字段类型不同,这就导致了冲突。

    为了解决这个问题,可以考虑在 Grade 类中更改 id 字段的名称,或者在 BaseEntity 中将 id 字段的类型更改为 Long。
    望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月13日
  • 已采纳回答 2月5日
  • 创建了问题 12月27日