首页 > 解决方案 > .save() 没有保存列表中给出的所有详细信息

问题描述

我有一个大小为 20 的列表,我正在尝试使用 .save() JPA 将其保存到数据库中。但只保存 17 行。保存后,我在数据库中检查只有 17 行得到反映。

可能是什么问题?

这是我的代码片段。

List<MyBean> g=new ArrayList<>();
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object); 
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
MyBean.add(mybean object);
repository.save(MyBean);

在这里它只在 db 中保存 17 行,而不是全部 20 行。

标签: hibernatejpaspring-data-jpa

解决方案


这不是灵魂,而是进一步调试的方法

这就是 List save 实现从内部的样子。

@Transactional
public <S extends T> List<S> save(Iterable<S> entities) {

    List<S> result = new ArrayList<S>();

    if (entities == null) {
        return result;
    }

    for (S entity : entities) {
        result.add(save(entity));
    }

    return result;
}

你注意到它的返回列表。所以你所有的持久数据也会被返回。

您可以交叉检查缺少哪些实体。


推荐阅读