【发布时间】:2016-03-03 21:07:40
【问题描述】:
我使用hibernate-jpa-2.1-api。我需要一些功能。
我每分钟解析一个文件并将数据插入 MSSQL DB。我需要跳过重复的行。例如12:00 我的文件中有 300 行。我解析它们中的每一个并插入 300 行。一分钟后 (12:01) 我的文件包含 500 行。我解析它,我只想插入 200 行新行,而不是旧的 300 行。
在程序的旧实现中,我使用了 SQL 插入,没有使用 ORM。
这是我的旧 SQL 查询:
insert /*+ ignore_row_on_dupkey_index(avaya_cm_cdr, i_avaya_cm_cdr_nodub) */ into avaya_cm_cdr(acmcdr_id, cdrdate, cdrtime, secdur, condcode, attdconsole, codeused, outcrtid, codedial, dialednum, intrkcode, incrtid, callingnum, vdn, bcc, ppm, acctcode, authcode) values(seq_acmcdr_id.nextval, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
这是我使用 ORM 的新插入:
em = Persistence.createEntityManagerFactory("COLIBRI").createEntityManager();
public void insertAVAYAcmCDRs(List<AvayaCmCdr> cdrList) {
em.getTransaction().begin();
for (AvayaCmCdr aCdrList : cdrList) {
em.persist(aCdrList);
}
em.getTransaction().commit();
}
如何通过 ORM 使用函数ignore_row_on_dupkey_index 的模拟?
附言在过去的认识中,我使用的是 Oracle DB。
【问题讨论】:
-
你刚刚得到的(俄语)答案有什么问题here?
标签: java mysql sql-server hibernate jpa