You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@MappedSuperclass时子类无法继承父类属性的问题排查

解决方案:父类属性无法序列化返回的问题

问题根源很明确:你的父类Auction里的字段都是private修饰,且没有添加@Getter/@Setter注解。子类InverseAuction上的@Getter/@Setter只会生成自身字段的访问器,不会处理父类的私有字段,Jackson序列化时拿不到父类字段的值,自然就不会返回这些属性。

给你两种可行的解决办法:

方法一:给父类添加Lombok注解

直接在父类Auction上加上@Getter和@Setter,这样父类所有字段的getter/setter都会被生成,Jackson就能正常序列化这些字段了:

@MappedSuperclass
@Getter
@Setter
public abstract class Auction {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(nullable = false)
    private String title;
    @Column
    private String description;
    @Column
    private String category;
    @Column(nullable = false)
    private long sellerId;
    @Column
    private String urlPicture;
}

方法二:手动编写父类字段的getter方法

如果不想用Lombok的全局注解,也可以给父类的每个字段手动写getter方法,比如:

@MappedSuperclass
public abstract class Auction {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(nullable = false)
    private String title;
    
    // 给每个字段添加getter
    public long getId() {
        return id;
    }
    
    public String getTitle() {
        return title;
    }
    
    // 剩下的description、category、sellerId、urlPicture同理添加getter
}

注意:JPA的@MappedSuperclass只负责数据库映射,和JSON序列化没有关系,序列化的关键是Jackson能通过getter方法访问到字段值。

内容的提问来源于stack exchange,提问作者AlchemistSteel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:22:20