当字段为 LOB 时,无法从字符串转换为类型 Long



在春季 MVC 应用程序中,我有 问题实体类

@Entity
public class Question {
    @Lob
    @Column(name="QUESTION_TITLE")
    private String question;
...
}

我用百里香叶。 对于这个领域,我的观点是波纹管

<input type="text" class="form-control" id="question" 
th:field="*{question}" th:value="${question}" placeholder="">

我的控制器保存方法是

@PostMapping("/save")
    public String saveQuestion(Question question, BindingResult bindingResult){
        questionService.save(question);
        return "redirect:/admin/questions/all/";
    }

但是当我提交时,我遇到了错误

Failed to bind request element: 
org.springframework.beans.TypeMismatchException:Failed to convert value of type 'java.lang.String' to required type com.sendit.security.model.Question'; 
nested exception is 
org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Long] for value 'what';
nested exception is java.lang.NumberFormatException:
For input string: "what"

当我将@Convert(转换器 = 问题转换器.class)属性添加到问题字段并实现像波纹管这样的问题转换器方法时。

@Converter
public static class QuestionConverter implements AttributeConverter<String, Integer> {
    @Override
    public Integer convertToDatabaseColumn(String attribute) {
        return attribute.length();
    }
    @Override
    public String convertToEntityAttribute(Integer dbData) {
        return "";
    }
}

我再次收到错误。

我已经找到了解决方案。 只需将"问题"字段名称

更改为另一个字段名称(如"标题")即可工作。 这是因为在视图中我想发送"问题"属性时,它被称为对象和发送的对象哈希值。

最新更新