org.hibernate.AssertionFailure:com.app.models.Item条目中的id为null(发生异常后不要刷新Session)

时间:2019-04-25 10:22:39

标签: java mysql spring hibernate

尝试保存批次列表时遇到此异常

    @Entity
    @Table(name = "item",uniqueConstraints = {@UniqueConstraint(columnNames = { "item_code", "stock_id" },name="uniqueItemCodeStockId")})
    public class Item {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name="stock_id")
    private int stockId;

    @Column(name = "item_code")
    private String itemCode;


}


@Override
    public void saveItemsBatch(List<Item> itemList) {

        Session session = sesionFactory.openSession();
        Transaction tx = session.beginTransaction();
        int count = 0;
        for(Item item : itemList ) {
            try {

                session.saveOrUpdate(item);
                count++;
                if(count%1000 == 0) {
                    session.flush();
                    session.clear();
                }

            }catch(Exception exception) {
                exceptionService.saveExceptions(item.getId(), exception);
            }

        }

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

我不知道我在想什么。我也尝试了此链接,但仍然无法解析org.hibernate.AssertionFailure: null id in entry (don't flush the Session after an exception occurs)

0 个答案:

没有答案