【发布时间】:2019-10-06 14:15:42
【问题描述】:
我有一个用户类型为管理员、客户和供应商的枚举类。我在用户模型类中使用 @Enumerated(EnumType.STRING) 注释了我的 userType 属性。但是,当我运行我的代码时,我遇到了类型不匹配的错误。
我在 Enum 用户类型字段中使用带有 varchar 的 spring boot 和 mysql 数据库。我下面的代码有更多的细节。
我的枚举类
UserType.java
public enum UserType {
CLIENT ("Client"),
SUPPLIER ("Supplier"),
ADMIN ("Admin");
private final String type;
UserType (String userType){
this.type = userType;
}
public String getType() {
return this.type;
}
}
User.java
UserType utype 的代码 sn-p。
@Entity
public class User{
@Enumerated(EnumType.STRING)
@Column (name = "user_type", nullable = false)
private UserType utype;
@Enumerated(EnumType.STRING)
public UserType getUtype() {
return utype;
}
@Enumerated(EnumType.STRING)
public void setUtype(UserType utype) {
this.utype = utype;
}
}
控制器
@GetMapping(value="/newUser")
public String registrationForm(Model model){
model.addAttribute("user", new User());
model.addAttribute("UserTypes", UserType.values());
return "register";
}
@PostMapping(value="/registerUser")
public String registerUser(@ModelAttribute(value = "user") User user){
userService.save(user);
return "pages/login";
}
百里香查看文件
register.html
<select th:field="*{utype}" >
<option th:each="usertype : ${UserTypes}"
th:text="${usertype.type}"
th:value="utype">
</option>
</select>
我希望将 utype 的输入转换为字符串,但出现以下错误。
字段“utype”上的对象“user”中的字段错误:拒绝值 [utype];代码 [typeMismatch.user.utype,typeMismatch.utype,typeMismatch.com.grocery.demo.Model.UserType,typeMismatch];参数 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [user.utype,utype];论据 [];默认消息 [utype]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“utype”所需的类型“com.grocery.demo.Model.UserType”;嵌套异常是 org.springframework.core.convert.ConversionFailedException: 无法从类型 [java.lang.String] 转换为类型 [@javax.persistence.Enumerated @javax.persistence.Column com.grocery.demo.Model.UserType]对于值“utype”;嵌套异常是 java.lang.IllegalArgumentException: No enum constant com.grocery.demo.Model.UserType.utype]]
mysql是使用application.properties配置的
spring.datasource.url=jdbc:mysql://localhost:3306/FredSystems
spring.datasource.username=root
spring.datasource.password=fred@2017
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.messages.basename=validation
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
【问题讨论】:
-
你能分享你正在获取数据的数据库条目吗
-
您是否检查了 utype 中返回的内容?很可能是一个对象
-
我已经发布了错误日志,字段 'utype' 上的对象 'user' 中的字段错误:拒绝值 [utype];我不明白出了什么问题
-
我已经发布了我的数据库连接@AmitD
-
@gybandi 我将不胜感激。为我的问题投票。
标签: java spring-boot spring-mvc