【发布时间】:2019-03-01 00:07:58
【问题描述】:
我有EcranChamp 实体
@Entity
@IdClass(EcranChampId.class)
public class EcranChamp {
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ecran")
Ecran ecran;
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "champ")
Champ champ;
...
还有EcranChampId
@Embeddable
public class EcranChampId implements Serializable {
private Champ champ;
private Ecran ecran;
...
每次我尝试保存 EcranChamp 元素时都会出现以下错误
2018-09-25 12:15:42.889 WARN 14216 --- [nio-8092-exec-8] .wsmsDefaultHandlerExceptionResolver:无法转换请求元素:org.springframework.beans.ConversionNotSupportedException:无法转换属性值'java.lang.Long' 类型的属性'ecran' 需要类型'com.kepler.porttailclient.domain.model.Ecran';嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.Long”的值转换为属性“ecran”所需的类型“com.kepler.porttailclient.domain.model.Ecran”:找不到匹配的编辑器或转换策略 2018-09-25 12:15:42.889 WARN 14216 --- [nio-8092-exec-8] .wsmsDefaultHandlerExceptionResolver:已解决由处理程序执行引起的异常:org.springframework.beans.ConversionNotSupportedException:无法转换类型的属性值'java.lang.Long' 为属性'ecran' 所需的类型'com.kepler.porttailclient.domain.model.Ecran';嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.Long”的值转换为属性“ecran”所需的类型“com.kepler.porttailclient.domain.model.Ecran”:找不到匹配的编辑器或转换策略
【问题讨论】:
-
您使用
@IdClass注释指定实体的id 类为EcranChampId。因此,您必须将@Id字段设为EcramChampId。添加@Id类型为Ecran和Champ的两个字段不起作用。 -
请为这个问题添加一个解决方案,我会尝试一下
标签: java spring spring-boot spring-data-jpa