【发布时间】:2017-05-25 23:39:13
【问题描述】:
在使用复合键时尝试保存实体时出现异常。这是我尝试保存到的异常、模型和存储库。有人可以帮忙吗?
org.springframework.beans.TypeMismatchException:转换失败 'org.CheckType_$$_jvst96c_4' 类型的属性值到所需类型 属性“checkType”的“int”;嵌套异常是 java.lang.IllegalArgumentException:无法转换类型的值 'org.CheckType_$$_jvst96c_4' 到所需的属性类型'int' 'checkType':属性编辑器 [org.springframework.beans.propertyeditors.CustomNumberEditor] 返回 'org.CheckType_$$_jvst96c_4' 类型的不适当值
@Entity
public class CheckType {
@Id
private int id;
@NotNull
private String name;
@OneToMany(mappedBy = "checkType")
private List<ClientCheck> checks;
//getters and setters
}
@Entity
public class Offer {
@Id
@Column(name = "offerid")
private Integer offerId;
//...
@OneToMany(mappedBy = "offer")
private List<ClientCheck> clientCheckList;
//getters and setters
}
@Entity
@IdClass(ClientCheckId.class)
public class ClientCheck {
@Id
@ManyToOne
@JoinColumn(name = "offer_id", referencedColumnName = "offerid")
private Offer offer;
@Id
@ManyToOne
@JoinColumn(name = "check_type_id", referencedColumnName = "id")
private CheckType checkType;
@Id
private Date timestamp;
private String result;
//getters and setters
}
public class ClientCheckId implements Serializable {
private int offer;
private int checkType;
private Date timestamp;
//getters and setters
//equals and hashCode
}
public interface ClientCheckRepo extends JpaRepository<ClientCheck, ClientCheckId> {
}
【问题讨论】:
-
上下文是什么?你是如何创建和保存这个实体的?通过 MVC 请求?
-
我不知道上下文是否重要;我在控制器上收到一个请求,制作/保存报价,创建时间戳,读取检查类型,并为每个获取检查结果,然后使用所有参数集保存检查。
-
上下文很重要,因为错误“org.springframework.beans.TypeMismatchException”表明问题在于请求参数的绑定。能否贴出相关的控制器代码。
-
调用控制器中的“clientCheckRepo.save(clientCheck)”时发生异常。现在,这是在服务层。
-
您的实体映射似乎有效(根据 JPA 2.1 规范)。也许是 Spring-Data 中的错误?您使用的是最新版本吗?
标签: java hibernate jpa spring-data