认为有一个名为'User'的类。
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String username;
//...get、set
}
然后我尝试通过以下代码跳转到用户信息编辑页面:
@GetMapping("edit")
public String edit(Model model, @RequestParam Long id) {
model.addAttribute("entity", userService.findById(id));
return "user/edit";
}
在“用户/编辑”页面中,我尝试获取正确的id值,但是失败。长类型id的值总是失去精度,如果id的值是“94105929343041536”,我得到的是“94105929343041540”。
无论您的首页是什么,在处理大型长值时,Javascript,JSON和Angular都存在很多问题。不幸的是,您无法更改这些值的舍入方式。在任何一种情况下,我建议在检索/存储时使用转换器将长值转换为String(使用类似AttributeConverter的东西)。
@Converter
public class LongStringConverter implements AttributeConverter<Long, String> {
@Override
public String convertToDatabaseColumn(Long value) {
return Long.toString(value);
}
@Override
public Long convertToEntityAttribute(String dbData) {
return Long.parseLong(dbData);
}
}
然后你可以在你的id字段上添加:
@Convert(converter = LongStringConverter.class)
根据您的确切用例,还有一些其他转换器可用。