当前位置: 首页 > 知识库问答 >
问题:

当插入数据包括SpringBoot中的字段dateofbirning类型LocalDate时出现错误java.time.LocalDate

裴心水
2023-03-14

我需要支持以下错误:

这是UserEntity类

@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class User extends BaseEntity {
    @Column(nullable = false, unique = true, columnDefinition = "varchar(50)")
    private String userName;

    @Column(nullable = false)
    private String password;

    @Column(unique = true, nullable = false)
    private String email;

    @Column(unique = true, nullable = false)
    private String phone;

    @Column
    private String address;

    @Column
    private String fullName;

    @Column
    private LocalDate dateOfBirth;

    @ManyToMany
    @JoinTable(name = "permission",
    joinColumns = @JoinColumn(name = "user_id", nullable = false),
    inverseJoinColumns = @JoinColumn(name = "role_id", nullable = false))
    @JsonIgnore
    private Set<Role> roles = new HashSet<>();

    @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
    @JsonIgnore
    private List<Blog> blogs = new ArrayList<>();
}

这是UserSaveRequest类

@Getter
@Setter
public class UserSaveRequest {
    private long id;
    private String userName;
    private String password;
    private String email;
    private String phone;
    private String address;
    private String fullName;
    private LocalDate dateOfBirth;
    private List<Long> ids;
}
public User mapToEntity(UserSaveRequest userSaveRequest){
        UserValidate.validate(userSaveRequest);
        String encode = PasswordHasher.hash(userSaveRequest.getPassword());
        User user = new User();
        BeanUtils.refine(userSaveRequest,user,BeanUtils::copyNonNull);
        user.setPassword(encode);
        List<Role> roles = roleRepository.findAllByIdIn(userSaveRequest.getIds());
        user.setRoles(new HashSet<>(roles));

        return user;
    }
@RestController // để đánh dấu là API
@RequestMapping("/api")
@Data
public class UserController extends BaseController {

    private final static Logger LOGGER = LoggerFactory.getLogger(UserController.class);

    private final UserService userService;
    private final UserMapper userMapper;
    private final TokenProducer tokenProducer;

    private JwtPayload createPayload(User user){
        JwtPayload jwtPayload = new JwtPayload();
        jwtPayload.setUserName(user.getUserName());
        jwtPayload.setId(user.getId());
        String roles = user.getRoles().stream().map(Role::getName).collect(Collectors.joining(","));

        jwtPayload.setRole(roles);

        return jwtPayload;
    }

    @PostMapping("/user")
    @PreAuthorize("hashAnyRole('ADMIN') OR hashAnyRole('USER') OR hashAnyRole('MANAGER')")
    public ResponseEntity<BaseResponse> save(@RequestBody UserSaveRequest userSaveRequest) {
        userService.save(userSaveRequest, userMapper::mapToEntity);

        return success();
    }
}
public interface BaseService<T, ID>{
    <RQ> void save(RQ req, Function<RQ, T> transform);
}
@Data
public abstract class AbstractServiceImpl<T, ID> implements BaseService<T, ID> {

    protected final BaseRepository baseRepository;

    public AbstractServiceImpl(BaseRepository baseRepository){
        this.baseRepository = baseRepository;
    }

    @Override
    public <RQ> void save(RQ req, Function<RQ, T> transform) {
        T t = transform.apply(req);
        baseRepository.save(t);
    }
}
@Service
public class UserServiceImpl extends AbstractServiceImpl<User, Long> implements UserService {

    public UserServiceImpl(UserRepository userRepository){
        super(userRepository);
    }
}

共有1个答案

华宣
2023-03-14

此异常是由于jackson不能正常工作,要么是因为它不在您的依赖项中,要么是因为您使用的版本与LocalDate对象不兼容。另一种可能是日期格式2

1*将以下代码添加到pom.xml中:

<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
</dependency>

2*可以向dateOfborning变量添加格式注释:

 类似资料:
  • 所以我从文件中读取信息,得到一个类型不匹配错误。我通过调试器运行了它,但我不确定是什么导致了它——因为它正在读取正确的数字(在本例中为2000),但它似乎不认为它是整数? 我的代码如下: 从这些信息中可以看出: 2014年雇员史密斯,约翰2000 2015推销员琼斯,比尔3000 100000 2014执行布什,乔治5000 55 2014年员工曼,莎拉4000 2015年销售员Marco,约旦5

  • 问题内容: 我正在尝试在MS Access中的表上进行操作。一切正常 一个声明。但是当执行其他三个操作时,我似乎什么也没得到 错误,但操作未反映在数据库上。请帮忙… 该声明如下: 我也可以知道为什么除了SELECT语句之外使用… 我收到此错误: 这是我的代码… 问题答案: 当您不提交 / 关闭连接时,可能会发生这种情况。确保在执行该语句之后提交连接,并在获取和执行它们的块的块中关闭连接(以及语句和

  • 我尝试使用flask在MongoDB中创建字段,使用下面的代码 URI中传递了正确的凭据,但我得到以下错误 OperationFailure:身份验证失败。,完整错误:{'OK':0.0,'errMsg':'Authentication Failed.','代码':18,'代码名':'AuthenticationFailed','操作时间':Timestamp(1600853835,1),'$Cl

  • 我将数据库解析为RDFlib图。现在我想把这个图中的三元组插入GraphDB三元组存储。当我在Sesame上托管的GraphDB Lite的旧版本上执行时,代码运行良好。然而,我在现在独立的GraphDB 7.0.0上执行相同的查询时出错。在引发错误之前,图形会被部分解析,插入的三元组确实会显示在三元组存储中。 这是代码的一部分: 以下是错误: 导致错误的原因是什么?如何解决?

  • 我有一个带有8个JCombobox和文本字段的Jframe...当我按下提交按钮时得到了数据类型不匹配错误 如何解决这个错误?

  • 新数组列表 我用多头填充这个数组列表。 当我试图将其插入postgresql时,我使用以下方法: 使用JDBC模板。但是当我试图运行这段代码时,它在“ARRAY[?]”上给出了一个错误。但如果temp2是一个单一的数字,比如:1253214,它就可以工作。有人有主意吗? 我的错误是: PreparedStatementCallback;错误的SQL语法[UPDATE pb1plnitm SET p