securitycontextholder.getcontext().getauthentication().getprincipal();

vsmadaxz  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(192)

我正在使用springboot、jpa、h2数据库。我正在尝试将excel文件上载到db,但出现错误

NULL not allowed for column "user_Id"; SQL statement:

我有产品和用户表,产品由用户表Map。我认为这应该是可行的,因为我正在使用jwt,如果他们是登录用户。excel上载,然后保存产品字段。excel文件包含诸如产品名称、说明等。

User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
@Entity
@ApiModel
public class Product extends BaseEntity {
    @Id
    @GeneratedValue
    @Column(name = "product_id")
    private Long id;

    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY,optional = false)
    @JoinColumn(name = "account_id")
    private User user;
@PostMapping("/api/excel/upload")
    public ResponseEntity<ResponseMessage> uploadFile(@RequestParam("file") MultipartFile file){
        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); // this part
        String message = "";
        if (ExcelHelper.hasExcelFormat(file)){
            try{
                excelService.save(file);
                message = "success: " + file.getOriginalFilename();
                return ResponseEntity.status(HttpStatus.OK).body(new ResponseMessage(message));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        message = "please upload file";
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseMessage(message));

这是我之前的问题,但我还不能解决这个问题。请帮忙!这是同样的错误。我想用useridMapmultipartfile

m4pnthwp

m4pnthwp1#

解决了的。我将contextholder设置为服务状态。这是一个很简单的问题。

相关问题