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

报错:One To Many属性类型不能为EmploymentDetails(Hibernate+Lombok)

报错原因分析:One To Many attribute value type should not be EmploymentDetails

核心问题

EmploymentDetails类缺少Hibernate持久化实体必需的@Entity注解。Hibernate要求@OneToMany注解关联的目标类型必须是被@Entity标记的实体类,否则会将其识别为非持久化类型,触发该错误提示。

验证与修正

查看你提供的EmploymentDetails代码,确实未添加@Entity注解,同时Hibernate实体类还需要无参构造函数(Lombok的@NoArgsConstructor可自动生成)。修正后的代码如下:

@lombok.Getter
@lombok.Setter
@Entity // 新增:标记为Hibernate实体类
@lombok.NoArgsConstructor // 新增:生成无参构造函数,满足Hibernate要求
public class EmploymentDetails {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String jobTitle;
    private String employmentType;
    private String client;
    private String employer;
    //private LocalDate startDate;
    //private LocalDate endDate;
    private String location;
    private String jobDescription;
    private String jobDuties;
    private String technologyStack;

    public EmploymentDetails(
     String jobTitle,
     String employmentType,
     String client,
     String employer,
     String location,
     String jobDescription,
     String jobDuties,
     String technologyStack){
        this.jobTitle = jobTitle;
        this.employmentType = employmentType;
        this.client = client;
        this.employer = employer;
        this.location = location;
        this.jobDescription = jobDescription;
        this.jobDuties = jobDuties;
        this.technologyStack = technologyStack;
    }
}

额外建议

  • 确保EmploymentDetails类所在包被Hibernate的组件扫描覆盖(通常Spring Boot主启动类同包或子包下会自动扫描)。
  • 若需要双向关联,可在EmploymentDetails中添加@ManyToOne注解,配合@JoinColumn指定外键,示例:
@ManyToOne
@JoinColumn(name = "PORTFOLIO_ID")
private PortfolioDetails portfolioDetails;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:03:28