创建双向一对一关联时遭遇Hibernate重复列映射异常求助
解决Hibernate映射重复列错误与双向一对一关联检查
首先,你遇到的MappingException根源非常明确:在UserEntity中重复映射了数据库列ADDED_BY。
看你的UserEntity代码,这里有个明显的笔误:
@Column(name = "ADDED_BY") private String addedBy; @Column(name = "ADDED_BY") // 这里写错了!应该是MODIFIED_BY private String modifiedBy;
第二个字段modifiedBy的@Column注解错误地指向了ADDED_BY列,导致Hibernate认为同一个列被两个字段映射,从而抛出异常。
第一步:修正重复列映射
把modifiedBy的列名改成正确的MODIFIED_BY即可:
@Column(name = "ADDED_BY") private String addedBy; @Column(name = "MODIFIED_BY") private String modifiedBy;
第二步:验证双向一对一关联配置
解决重复列问题后,再确认你的双向一对一关联是否符合预期:
- 你将关联的维护端设置在
UserStatisticsEntity(通过UserEntity的mappedBy = "user"),这是正确的,因为子表USER_DETAILS拥有外键USER_ID,作为维护端更合理。 UserStatisticsEntity中的@JoinColumn(name = "USER_ID")正确指定了外键列,配置没问题。- 注意
UserEntity中@OneToOne的optional = false属性,这要求每个用户必须关联一个统计实体,如果你的业务场景允许用户暂时没有统计信息,可以将其改为optional = true或者移除该属性。
修正后重新运行程序,应该就能解决这个映射异常了。
内容的提问来源于stack exchange,提问作者jackfr0st
相关产品推荐
相关产品推荐

