报错: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
相关产品推荐
相关产品推荐

