Rumah  >  Soal Jawab  >  teks badan

java - Data sisipan kelompok hibernate sentiasa disisipkan dengan tidak lengkap

Apabila menggunakan hibernate untuk memasukkan data ke dalam pangkalan data, saya mendapati bahawa hanya sebahagian daripada jumlah lebih daripada 2,000 keping data boleh dimasukkan ke dalam pangkalan data Apabila menyahpepijat, saya mendapati bahawa objek itu memang dicipta dalam gelung dan save() kaedah dipanggil
Kod saya adalah seperti berikut

    Configuration configuration = new Configuration().configure();
    SessionFactory sessionFactory = configuration.buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();

    String file = "src/1.xlsx";
    InputStream is = null;
    try {
        is = new FileInputStream(file);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    XSSFWorkbook xssfWorkbook = null;
    try {
        xssfWorkbook = new XSSFWorkbook(is);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    // 获取每一个工作薄
    for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
        XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
        if (xssfSheet == null) {
            continue;
        }
        // 获取当前工作薄的每一行

        for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
            XSSFRow xssfRow = xssfSheet.getRow(rowNum);
            if (xssfRow != null) {
                XSSFCell one = xssfRow.getCell(0);
                XSSFCell two = xssfRow.getCell(1);
                XSSFCell three = xssfRow.getCell(2);
                String name = getValue(three);
                String code;
                if (getValue(one).equals("沪市"))
                    code = "sh" + getValue(two);
                else
                    code = "sz" + getValue(two);
                StockName2Code s = new StockName2Code();
                s.setCode(code);
                s.setName(name);
                session.save(s);
                if (rowNum % 20 == 0) {
                    session.flush();
                    session.clear();
                }

            }
        }
    }
    tx.commit();
    session.close();
    sessionFactory.close();

Fail konfigurasi saya adalah seperti berikut

` <!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<konfigurasi hibernate>

<session-factory>
    <!-- Database connection settings -->

    <!-- 表示使用 mysql 数据库驱动类 -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

    <!-- jdbc 的连接 url 和数据库 -->
    <property name="connection.url">jdbc:mysql://*******/******?useUnicode=true&amp;characterEncoding=UTF-8</property>

    <!-- 数据库用户名 -->
    <property name="connection.username">root</property>

    <!-- 密码(这里为空) -->
    <property name="connection.password">********</property>

    <!-- JDBC connection pool (use the built-in) -->
    <!-- <property name="connection.pool_size">1</property> -->

    <!-- 数据库使用的方言 -->
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

    <!-- Echo all executed SQL to stdout -->
    <!-- 设置 打印输出 sql 语句 为真 -->
    <property name="show_sql">true</property>

    <!-- 设置格式为 sql -->
    <property name="format_sql">true</property>

    <!-- 第一次加载 hibernate 时根据实体类自动建立表结构,以后自动更新表结构 -->
    <property name="hbm2ddl.auto">update</property>

    <!-- 映射文件 -->
    <mapping class="pojo.StockName2Code" />
</session-factory>

</hibernate-configuration>

Walaupun tiada pengecualian kehabisan memori dilemparkan, semasa mencari, saya mendapati ia mungkin disebabkan oleh masalah cache hibernate, jadi saya menambah blok kod yang memaksa muat semula setiap 20 item, tetapi akhirnya saya mendapati ia masih tidak mempunyai kesan, dan operasi sisipan masih saya hanya boleh lakukan sebahagian daripadanya, adakah ada sebab yang mungkin?

某草草某草草2713 hari yang lalu534

membalas semua(1)saya akan balas

  • 世界只因有你

    世界只因有你2017-05-17 10:01:07

    hibernate telah ditetapkan kepada show_sql, adakah bilangan sql yang dicetak konsisten dengan bilangan data excel?

    balas
    0
  • Batalbalas