Hibernate多态持久化resultatRAT实体时报parameterIndex参数1无效如何解决?
问题原因
你遇到的Invalid value "1" for parameter "parameterIndex" [90008-200]是H2数据库的参数绑定异常,核心是JPA继承映射配置冲突导致:
- 父类
Resultat中同时配置了@DiscriminatorColumn(name = "typeSimulation")和手动映射的typeSimulation实体字段,同一个表列被两次加入到插入SQL的参数列表中,导致参数索引匹配异常 - 子类
ResultatRAT上重复声明了@Inheritance注解,该注解仅需在继承体系的根父类配置即可,子类重复配置会导致映射逻辑混乱
解决方案
按以下步骤修改配置即可解决:
- 删除
ResultatRAT类上的@Inheritance(strategy = InheritanceType.JOINED)注解 - 调整父类
Resultat中typeSimulation字段的定义,标注为不可插入、不可更新,避免和自动维护的鉴别器列冲突:
@Column(name = "typeSimulation", nullable = false, insertable = false, updatable = false) @Enumerated(EnumType.STRING) private TypeSimulation typeSimulation;
修改完成后重启服务,再次提交原来的JSON请求即可完成ResultatRAT实体的持久化操作,父表resultat和子表resultat_rat会分别插入对应数据,鉴别器列也会自动填充正确的枚举值。
内容的提问来源于stack exchange,提问作者Zidani Mehdi
相关产品推荐
相关产品推荐

