微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Native List在Jpa/hibernate Spring中插入查询

我想在我的数据库中插入一个对象列表.在特殊情况下,我知道他们的主键(不是自动生成的)不存在.由于我需要插入一个大集合,因此save(Iterable< Obj>对象)会变慢.

因此,我考虑使用本机查询. native insert query in hibernate + spring data

在上一个答案中,它没有说明如何插入对象集合.这可能吗?

@Query("insert into my_table (date,feature1,feature2,quantity) VALUES Now what to add here>",nativeQuery = true)
void insert(List

当然,如果你有一个更好的整体解决方案,它甚至更好.

最佳答案
我最终实现了自己的存储库.这个性能非常好,2s而不是35s之前插入50000个元素.这段代码的问题在于它不会阻止sql注入.

我还尝试使用setParameter(1,…)构建一个查询,但不知何故,JPA需要很长时间才能完成.

class ObjectRepositoryImpl implements DemandGroupSalesOfDayCustomrepository {

    private static final int INSERT_BATCH_SIZE = 50000;

    @Autowired
    private EntityManager entityManager;

    @Override
    public void blindInsert(ListsqlForObj).collect(joining(","));
         String insertsql = "INSERT INTO mytable (date,quantity) VALUES ";
         entityManager.createNativeQuery(insertsql + values).executeUpdate();
         entityManager.flush();
         entityManager.clear();
    }

    private String rendersqlForObj(Object obj) {
        return "('" + obj.getDate() + "','" +
            obj.getFeature1() + "','" +
            obj.getFeature2() + "'," +
            obj.getQuantity() + ")";
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐