Hibernate JPA一对多关联SQL生成错误求助
解决Hibernate关联条件错误的问题
问题根源
当前的关联配置让Hibernate默认生成了基于artikel_id字段的关联条件,但你的表结构中Artikeldetails的主键id直接作为关联Artikel的外键,需要显式指定关联字段匹配规则。
修正实体类配置
1. 修改Artikeldetails实体的关联注解
在Artikeldetails类中,给@ManyToOne添加@JoinColumn,明确指定外键为自身的id字段,关联Artikel的id:
@Entity public class Artikeldetails { @Id private Long id; // 该字段既是主键,也是关联Artikel的外键 @ManyToOne @JoinColumn(name = "id", referencedColumnName = "id") private Artikel artikel; // 其他字段、getter和setter方法 }
2. 调整Artikel实体的@OneToMany配置
在Artikel类中,确保@OneToMany的mappedBy指向Artikeldetails中的关联属性,保持关联关系的一致性:
@Entity public class Artikel { @Id private Long id; @OneToMany(mappedBy = "artikel", fetch = FetchType.LAZY) private List<Artikeldetails> artikeldetailsList; // 其他字段、getter和setter方法 }
验证效果
修改配置后,Hibernate生成的SQL关联条件会自动调整为a1_0.id = a2_0.id,匹配你的表结构需求。如果自定义JPQL查询包含关联逻辑,确保语句中没有硬编码错误的关联字段。
内容的提问来源于stack exchange,提问作者Sametcey
相关产品推荐
相关产品推荐

