Java 我在使用Hibernate进行批插入时出错;无法为表“中的标识列插入显式值”&引用;当标识“插入”设置为“关闭”时;

Java 我在使用Hibernate进行批插入时出错;无法为表“中的标识列插入显式值”&引用;当标识“插入”设置为“关闭”时;,java,sql-server,hibernate,jdbc,batch-insert,Java,Sql Server,Hibernate,Jdbc,Batch Insert,当使用Hibernate通过批插入插入插入数据时,我得到了下面提到的堆栈跟踪(我最初将批大小设置为6) 这是我的实体类BaseUploadEntity.java package com.spice.vodabaseupload.beans; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persist

当使用Hibernate通过批插入插入插入数据时,我得到了下面提到的堆栈跟踪(我最初将批大小设置为6)

这是我的实体类BaseUploadEntity.java

package com.spice.vodabaseupload.beans;

import javax.persistence.Column;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="tbl_fresh_base")
public class BaseUploadEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "id_gen")
    @SequenceGenerator(name="id_gen",sequenceName = "id_seq_gen")
    @Column(name="id")
    private long id;

    @Column(name="RETAILER_NUMBER")
    private String RETAILERNUMBER;

    @Column(name="DSE_MOB_NO")
    private String DSE_MOB_NO;

    @Column(name="DIST_Number")
    private String DIST_Number;

    @Column(name="TSM_NUMBER")
    private String TSM_NUMBER;

    @Column(name="ASM_NUMBER")
    private String ASM_NUMBER;

    @Column(name="ZM_NUMBER")
    private String ZM_NUMBER;


    @Column(name="CIRCLE_TEAM")
    private String CIRCLE_TEAM;

    @Column(name="CIRCLE_TEAM1")
    private String CIRCLE_TEAM1;

    @Column(name="CIRCLE_TEAM2")
    private String CIRCLE_TEAM2;

    @Column(name="CIRCLE_TEAM3")
    private String CIRCLE_TEAM3;

    @Column(name="BRAND ")
    private String Brand;

    @Column(name="UB_COUNT")
    private String UB_Count;

   //Here are getters and Setters//


}
这是应用程序.properties文件

jdbc.driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url = jdbc:sqlserver://localhost:1433;database=demo
jdbc.username = bgm
jdbc.password = bgm
hibernate.dialect = org.hibernate.dialect.SQLServer2012Dialect
hibernate.show_sql = true
hibernate.format_sql = true
hibernate.hbm2ddl.auto = update
hibernate.jdbc.batch_size = 6
hibernate.order_inserts = true
使用JavaConfig创建SessionFactory如下所示

package com.spice.vodabaseupload.configuration;

import java.util.Properties;

import javax.sql.DataSource;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
@EnableTransactionManagement
@ComponentScan({ "com.spice.vodabaseupload.configuration" })
@PropertySource(value = { "classpath:application.properties" })
public class ProjectConfiguration extends WebMvcConfigurerAdapter {

    @Autowired
    private Environment environment;

    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setPackagesToScan(new String[] { "com.spice.vodabaseupload.beans" });
        sessionFactory.setHibernateProperties(hibernateProperties());
        return sessionFactory;
    }

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
        dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
        dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
        dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
        return dataSource;
    }

    private Properties hibernateProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
        properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
        properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));

        properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("hibernate.hbm2ddl.auto"));
        properties.put("hibernate.jdbc.batch_size", environment.getRequiredProperty("hibernate.jdbc.batch_size"));
        properties.put("hibernate.order_inserts", true);
        return properties;
    }

    @Bean
    @Autowired
    public HibernateTransactionManager transactionManager() {
        HibernateTransactionManager txManager = new HibernateTransactionManager();
        txManager.setSessionFactory(sessionFactory().getObject());
        return txManager;
    }   
}
这是我的baseuploadaoimpl.class


            FileInputStream inputStream = new FileInputStream(baseFileToCreate);
            Workbook workbook = getRelevantWorkbook(inputStream, baseFileToCreate.toString());

            Sheet firstSheet = workbook.getSheetAt(0);
            Iterator<Row> iterator = firstSheet.iterator();

            int count = 0;

            while (iterator.hasNext()) {
                BaseUploadEntity entity = new BaseUploadEntity();
                count++;
                Row nextRow = iterator.next();
                Iterator<Cell> cellIterator = nextRow.cellIterator();

                    while (cellIterator.hasNext()) {

                        Cell cell = cellIterator.next();

                        if (cell.getColumnIndex() == 0) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setRETAILERNUMBER(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setRETAILERNUMBER(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }

                        }

                        else if (cell.getColumnIndex() == 1) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setDSE_MOB_NO(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setDSE_MOB_NO(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 2) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setDIST_Number(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setDIST_Number(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 3) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setTSM_NUMBER(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setTSM_NUMBER(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 4) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setASM_NUMBER(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setASM_NUMBER(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 5) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setZM_NUMBER(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setZM_NUMBER(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 6) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setCIRCLE_TEAM(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setCIRCLE_TEAM(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 7) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setCIRCLE_TEAM1(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setCIRCLE_TEAM1(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 8) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setCIRCLE_TEAM2(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setCIRCLE_TEAM2(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 9) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setCIRCLE_TEAM3(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setCIRCLE_TEAM3(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 10) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setBrand(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setBrand(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 11) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setUB_Count(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setUB_Count(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }
                    }

                    session.save(entity);
                    if (count % batchSize == 0) {
                        LOGGER.info("Inserting " + count + " Record");
                        session.flush();
                        session.clear();
                    }   
                }
            inputStream.close();

FileInputStream inputStream=新的FileInputStream(baseFileToCreate);
工作簿工作簿=getRelevantWorkbook(inputStream,baseFileToCreate.toString());
Sheet firstSheet=工作簿。getSheetAt(0);
迭代器迭代器=firstSheet.Iterator();
整数计数=0;
while(iterator.hasNext()){
BaseUploadEntity=新的BaseUploadEntity();
计数++;
行nextRow=iterator.next();
迭代器cellIterator=nextRow.cellIterator();
while(cellIterator.hasNext()){
Cell=cellIterator.next();
if(cell.getColumnIndex()=0){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setRETAILERNUMBER(cell.getStringCellValue());
}
else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
entity.setRETAILERNUMBER(NumberToTextConverter.toText(cell.getNumericCellValue());
}
}
else if(cell.getColumnIndex()==1){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setDSE_MOB_NO(cell.getStringCellValue());
}
else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
entity.setDSE_MOB_NO(NumberToTextConverter.toText(cell.getNumericCellValue());
}
}
else if(cell.getColumnIndex()==2){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setDIST_编号(cell.getStringCellValue());
}
else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
entity.setDIST_Number(NumberToTextConverter.toText(cell.getNumericCellValue());
}
}
else if(cell.getColumnIndex()==3){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setTSM_编号(cell.getStringCellValue());
}
else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
entity.setTSM_NUMBER(NumberToTextConverter.toText(cell.getNumericCellValue());
}
}
else if(cell.getColumnIndex()==4){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setASM_编号(cell.getStringCellValue());
}
else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
entity.setASM_NUMBER(NumberToTextConverter.toText(cell.getNumericCellValue());
}
}
else if(cell.getColumnIndex()=5){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setZM_编号(cell.getStringCellValue());
}
else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
entity.setZM_NUMBER(NumberToTextConverter.toText(cell.getNumericCellValue());
}
}
else if(cell.getColumnIndex()==6){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setCIRCLE_团队(cell.getStringCellValue());
}
else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
entity.setCIRCLE_团队(NumberToTextConverter.toText(cell.getNumericCellValue());
}
}
else if(cell.getColumnIndex()==7){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setCIRCLE_TEAM1(cell.getStringCellValue());
}
else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
entity.setCIRCLE_TEAM1(NumberToTextConverter.toText(cell.getNumericCellValue());
}
}
else if(cell.getColumnIndex()==8){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setCIRCLE_TEAM2(cell.getStringCellValue());
}
else if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
entity.setCIRCLE_TEAM2(NumberToTextConverter.toText(cell.getNumericCellValue());
}
}
else if(cell.getColumnIndex()==9){
if(cell.getCellType()==cell.cell\u类型\u字符串){
entity.setCIRCLE_团队

            FileInputStream inputStream = new FileInputStream(baseFileToCreate);
            Workbook workbook = getRelevantWorkbook(inputStream, baseFileToCreate.toString());

            Sheet firstSheet = workbook.getSheetAt(0);
            Iterator<Row> iterator = firstSheet.iterator();

            int count = 0;

            while (iterator.hasNext()) {
                BaseUploadEntity entity = new BaseUploadEntity();
                count++;
                Row nextRow = iterator.next();
                Iterator<Cell> cellIterator = nextRow.cellIterator();

                    while (cellIterator.hasNext()) {

                        Cell cell = cellIterator.next();

                        if (cell.getColumnIndex() == 0) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setRETAILERNUMBER(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setRETAILERNUMBER(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }

                        }

                        else if (cell.getColumnIndex() == 1) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setDSE_MOB_NO(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setDSE_MOB_NO(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 2) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setDIST_Number(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setDIST_Number(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 3) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setTSM_NUMBER(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setTSM_NUMBER(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 4) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setASM_NUMBER(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setASM_NUMBER(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 5) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setZM_NUMBER(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setZM_NUMBER(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 6) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setCIRCLE_TEAM(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setCIRCLE_TEAM(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 7) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setCIRCLE_TEAM1(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setCIRCLE_TEAM1(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 8) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setCIRCLE_TEAM2(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setCIRCLE_TEAM2(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 9) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setCIRCLE_TEAM3(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setCIRCLE_TEAM3(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 10) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setBrand(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setBrand(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }

                        else if (cell.getColumnIndex() == 11) {
                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                                entity.setUB_Count(cell.getStringCellValue());
                            }

                            else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                                entity.setUB_Count(NumberToTextConverter.toText(cell.getNumericCellValue()));
                            }
                        }
                    }

                    session.save(entity);
                    if (count % batchSize == 0) {
                        LOGGER.info("Inserting " + count + " Record");
                        session.flush();
                        session.clear();
                    }   
                }
            inputStream.close();