ReturnGeneratedKeys Пусто Несмотря на успешную пакетную вставку - PullRequest
0 голосов
/ 12 мая 2018

, поэтому я недавно начал новый проект и вставлял данные в таблицу MariaDB.Я был в состоянии получить сгенерированные ключи в прошлом, так что это немного странно для меня, чтобы увидеть.Строки вставляются, как я вижу после обновления таблицы, но сгенерированные ключи не возвращаются.Это мой текущий код.

    try (Connection con = DatabaseConnection.getConnection();
            PreparedStatement ps = con.prepareStatement("INSERT INTO items (chrid, accountid, type, pos, itemid) VALUES (?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS)) {
            con.setAutoCommit(true);
            ArrayList<Pair<Integer, Equip>> equips = new ArrayList<>();
            for (Pair<Integer, Integer> item : items) {
                equips.add(itemCreationSystem.createEquip(item.right));
                ps.setInt(1, dbId.dbId);
                ps.setInt(2, client.accountId);
                ps.setInt(3, 0);
                ps.setInt(4, item.left);
                ps.setInt(5, item.right);
                ps.addBatch();
            }
            ps.executeBatch();
            try (ResultSet rs = ps.getGeneratedKeys()) {
                try (PreparedStatement ps2 = con.prepareStatement(
                        "INSERT INTO equips (itemKey, slots, successfulUpgrades, str, dex, intel, luk, hp, mp, " +
                                "wAtk, mAtk, wDef, mDef, equipPos)")) {
                    while (rs.next()) {
                        Pair<Integer, Equip> pair = equips.remove(0);
                        Equip equip = pair.right;
                            ps2.setInt(1, rs.getInt(1));
                            ps2.setShort(2, equip.upgradeSlots);
                            ps2.setShort(3, equip.successfulUpgrades);
                            ps2.setShort(4, equip.getProperty("STR"));
                            ps2.setShort(5, equip.getProperty("DEX"));
                            ps2.setShort(6, equip.getProperty("INT"));
                            ps2.setShort(7, equip.getProperty("INT"));
                            ps2.setShort(8, equip.getProperty("HP"));
                            ps2.setShort(9, equip.getProperty("MMP"));
                            ps2.setShort(10, equip.getProperty("PAD"));
                            ps2.setShort(11, equip.getProperty("MAD"));
                            ps2.setShort(12, equip.getProperty("PDD"));
                            ps2.setShort(13, equip.getProperty("MDD"));
                            ps2.setInt(14, pair.left);
                            ps2.addBatch();
                    }
                    ps2.executeBatch();
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

Я играл с autoCommit, но не получил никаких результатов.Я подозреваю, что, возможно, это так, но если я не укажу значение true там или после запроса, строки не будут вставлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...