Java 无法将从excel读取的数据插入数据库

Java 无法将从excel读取的数据插入数据库,java,jpa,spring-boot,apache-poi,multipart,Java,Jpa,Spring Boot,Apache Poi,Multipart,我想上传excel文件并在后端读取,然后使用JPA将其插入oracle数据库。 我能够读取文件,但当我试图使用contactusRepository.save(contactus)将数据插入数据库时我收到空指针异常。 实体类:-Contactus @Entity @Table(name = "USER_CONTACTS") @NamedQueries({ @NamedQuery(name = "Contactus.findAll", query = "SELECT c FROM

我想上传excel文件并在后端读取,然后使用JPA将其插入oracle数据库。 我能够读取文件,但当我试图使用contactusRepository.save(contactus)将数据插入数据库时我收到空指针异常。

实体类:-Contactus

 @Entity
@Table(name = "USER_CONTACTS")
@NamedQueries({
        @NamedQuery(name = "Contactus.findAll", query = "SELECT c FROM Contactus c")})
public class Contactus extends Domain implements Serializable {
    private static final long serialVersionUID = 1L;


    /***************Columns Parameters**************************/
    private String FULL_NAME;
    private String COMPANY_NAME;
    private String EMAIL;
    private String CONTACT_NUMBER;
    private String ADDRESS;
    private String COMMENTS;
    @Basic(optional = false)
    @Column(nullable = false)
    private int ACKNOWLEDGE;

    /***************parametrised construtor**************************/

    public Contactus(String FULL_NAME, String COMPANY_NAME, String EMAIL, String CONTACT_NUMBER, String ADDRESS, String COMMENTS, int ACKNOWLEDGE) {

        this.FULL_NAME = FULL_NAME;
        this.COMPANY_NAME = COMPANY_NAME;
        this.EMAIL = EMAIL;
        this.CONTACT_NUMBER = CONTACT_NUMBER;
        this.ADDRESS = ADDRESS;
        this.COMMENTS = COMMENTS;
        this.ACKNOWLEDGE = ACKNOWLEDGE;
    }
    public Contactus() {
    }

    /***************Getter And Setters**************************/
    public String getFULL_NAME() {
        return FULL_NAME;
    }

    public void setFULL_NAME(String FULL_NAME) {
        this.FULL_NAME = FULL_NAME;
    }

    public String getCOMPANY_NAME() {
        return COMPANY_NAME;
    }

    public void setCOMPANY_NAME(String COMPANY_NAME) {
        this.COMPANY_NAME = COMPANY_NAME;
    }

    public String getEMAIL() {
        return EMAIL;
    }

    public void setEMAIL(String EMAIL) {
        this.EMAIL = EMAIL;
    }

    public String getCONTACT_NUMBER() {
        return CONTACT_NUMBER;
    }

    public void setCONTACT_NUMBER(String CONTACT_NUMBER) {
        this.CONTACT_NUMBER = CONTACT_NUMBER;
    }

    public String getADDRESS() {
        return ADDRESS;
    }

    public void setADDRESS(String ADDRESS) {
        this.ADDRESS = ADDRESS;
    }

    public String getCOMMENTS() {
        return COMMENTS;
    }

    public void setCOMMENTS(String COMMENTS) {
        this.COMMENTS = COMMENTS;
    }

    public int getACKNOWLEDGE() {
        return ACKNOWLEDGE;
    }

    public void setACKNOWLEDGE(int ACKNOWLEDGE) {
        this.ACKNOWLEDGE = ACKNOWLEDGE;
    }

}
@Repository
@RepositoryRestResource
public interface ContactusRepository extends JpaRepository<Contactus,Integer>{

}
@RestController
@RequestMapping("/api/v1")
public class ExcelController {

    @Autowired
    private ContactusRepository contactusRepository;

    ObjectMapper mapper = new ObjectMapper();
    @RequestMapping(value = "/upload3", method = RequestMethod.POST, consumes = javax.ws.rs.core.MediaType.MULTIPART_FORM_DATA)
    public void uploadFileHandler(@RequestParam("name") String name,
                                  @RequestParam("file") MultipartFile file) throws IOException {


        try {
            ExcelController ex=new ExcelController();
            File f1=ex.convert(file);
            //     FileInputStream file = new FileInputStream(new File("E://Imp/Details.xlsx"));
            XSSFWorkbook workbook = new XSSFWorkbook(f1);
            XSSFSheet sheet = workbook.getSheetAt(0);
            Iterator<Row> rowIterator = sheet.iterator();
            rowIterator.next();
            while(rowIterator.hasNext())
            {
                Row row = rowIterator.next();
                //For each row, iterate through each columns
                Iterator<Cell> cellIterator = row.cellIterator();

                while(cellIterator.hasNext())
                {
                    Cell cell = cellIterator.next();
                    //This will change all Cell Types to String
                    cell.setCellType(Cell.CELL_TYPE_STRING);
                    switch(cell.getCellType())
                    {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println("boolean===>>>"+cell.getBooleanCellValue() + "\t");
                            break;
                        case Cell.CELL_TYPE_NUMERIC:

                            break;
                        case Cell.CELL_TYPE_STRING:

                            List list=new ArrayList();
                            list.add(cell.getStringCellValue());

                            break;
                    }


                }
                name=row.getCell(0).getStringCellValue();
                String email = row.getCell(1).getStringCellValue();
                String add=row.getCell(2).getStringCellValue();
                String  company=row.getCell(3).getStringCellValue();
                System.out.println(name+email+add+company);
                ExcelController ex1=new ExcelController();
                ex1.InsertRowInDB2(name,email,add,company);

                System.out.println("");


            }
            workbook.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        }
    }

/******************* jason object but not done***********/
    public JSONObject InsertRowInDB2(String name,String email,String add,String company){

        JSONObject json = new JSONObject();
        json.put("full_NAME",name);
        json.put("email",email);
        json.put("address",add);
        json.put("company_NAME",company);
   // ex1.createexcelContactus(json);

   return json;
    }

    public String  createexcelContactus(Contactus contactus) {
        contactusRepository.save(contactus);
        return "data saved";
    }


    public File convert(MultipartFile file) throws IOException {
        File convFile = new File(file.getOriginalFilename());
        convFile.createNewFile();
        FileOutputStream fos = new FileOutputStream(convFile);
        fos.write(file.getBytes());
        fos.close();
        return convFile;
    }

}
JPA存储库:-ContactusRepository

 @Entity
@Table(name = "USER_CONTACTS")
@NamedQueries({
        @NamedQuery(name = "Contactus.findAll", query = "SELECT c FROM Contactus c")})
public class Contactus extends Domain implements Serializable {
    private static final long serialVersionUID = 1L;


    /***************Columns Parameters**************************/
    private String FULL_NAME;
    private String COMPANY_NAME;
    private String EMAIL;
    private String CONTACT_NUMBER;
    private String ADDRESS;
    private String COMMENTS;
    @Basic(optional = false)
    @Column(nullable = false)
    private int ACKNOWLEDGE;

    /***************parametrised construtor**************************/

    public Contactus(String FULL_NAME, String COMPANY_NAME, String EMAIL, String CONTACT_NUMBER, String ADDRESS, String COMMENTS, int ACKNOWLEDGE) {

        this.FULL_NAME = FULL_NAME;
        this.COMPANY_NAME = COMPANY_NAME;
        this.EMAIL = EMAIL;
        this.CONTACT_NUMBER = CONTACT_NUMBER;
        this.ADDRESS = ADDRESS;
        this.COMMENTS = COMMENTS;
        this.ACKNOWLEDGE = ACKNOWLEDGE;
    }
    public Contactus() {
    }

    /***************Getter And Setters**************************/
    public String getFULL_NAME() {
        return FULL_NAME;
    }

    public void setFULL_NAME(String FULL_NAME) {
        this.FULL_NAME = FULL_NAME;
    }

    public String getCOMPANY_NAME() {
        return COMPANY_NAME;
    }

    public void setCOMPANY_NAME(String COMPANY_NAME) {
        this.COMPANY_NAME = COMPANY_NAME;
    }

    public String getEMAIL() {
        return EMAIL;
    }

    public void setEMAIL(String EMAIL) {
        this.EMAIL = EMAIL;
    }

    public String getCONTACT_NUMBER() {
        return CONTACT_NUMBER;
    }

    public void setCONTACT_NUMBER(String CONTACT_NUMBER) {
        this.CONTACT_NUMBER = CONTACT_NUMBER;
    }

    public String getADDRESS() {
        return ADDRESS;
    }

    public void setADDRESS(String ADDRESS) {
        this.ADDRESS = ADDRESS;
    }

    public String getCOMMENTS() {
        return COMMENTS;
    }

    public void setCOMMENTS(String COMMENTS) {
        this.COMMENTS = COMMENTS;
    }

    public int getACKNOWLEDGE() {
        return ACKNOWLEDGE;
    }

    public void setACKNOWLEDGE(int ACKNOWLEDGE) {
        this.ACKNOWLEDGE = ACKNOWLEDGE;
    }

}
@Repository
@RepositoryRestResource
public interface ContactusRepository extends JpaRepository<Contactus,Integer>{

}
@RestController
@RequestMapping("/api/v1")
public class ExcelController {

    @Autowired
    private ContactusRepository contactusRepository;

    ObjectMapper mapper = new ObjectMapper();
    @RequestMapping(value = "/upload3", method = RequestMethod.POST, consumes = javax.ws.rs.core.MediaType.MULTIPART_FORM_DATA)
    public void uploadFileHandler(@RequestParam("name") String name,
                                  @RequestParam("file") MultipartFile file) throws IOException {


        try {
            ExcelController ex=new ExcelController();
            File f1=ex.convert(file);
            //     FileInputStream file = new FileInputStream(new File("E://Imp/Details.xlsx"));
            XSSFWorkbook workbook = new XSSFWorkbook(f1);
            XSSFSheet sheet = workbook.getSheetAt(0);
            Iterator<Row> rowIterator = sheet.iterator();
            rowIterator.next();
            while(rowIterator.hasNext())
            {
                Row row = rowIterator.next();
                //For each row, iterate through each columns
                Iterator<Cell> cellIterator = row.cellIterator();

                while(cellIterator.hasNext())
                {
                    Cell cell = cellIterator.next();
                    //This will change all Cell Types to String
                    cell.setCellType(Cell.CELL_TYPE_STRING);
                    switch(cell.getCellType())
                    {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println("boolean===>>>"+cell.getBooleanCellValue() + "\t");
                            break;
                        case Cell.CELL_TYPE_NUMERIC:

                            break;
                        case Cell.CELL_TYPE_STRING:

                            List list=new ArrayList();
                            list.add(cell.getStringCellValue());

                            break;
                    }


                }
                name=row.getCell(0).getStringCellValue();
                String email = row.getCell(1).getStringCellValue();
                String add=row.getCell(2).getStringCellValue();
                String  company=row.getCell(3).getStringCellValue();
                System.out.println(name+email+add+company);
                ExcelController ex1=new ExcelController();
                ex1.InsertRowInDB2(name,email,add,company);

                System.out.println("");


            }
            workbook.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        }
    }

/******************* jason object but not done***********/
    public JSONObject InsertRowInDB2(String name,String email,String add,String company){

        JSONObject json = new JSONObject();
        json.put("full_NAME",name);
        json.put("email",email);
        json.put("address",add);
        json.put("company_NAME",company);
   // ex1.createexcelContactus(json);

   return json;
    }

    public String  createexcelContactus(Contactus contactus) {
        contactusRepository.save(contactus);
        return "data saved";
    }


    public File convert(MultipartFile file) throws IOException {
        File convFile = new File(file.getOriginalFilename());
        convFile.createNewFile();
        FileOutputStream fos = new FileOutputStream(convFile);
        fos.write(file.getBytes());
        fos.close();
        return convFile;
    }

}

提前谢谢,我真的需要这个解决方案。

请向我们展示堆栈跟踪。那么,我在您的代码中添加了堆栈跟踪的可能副本?