我有獨特= true的collumn ..在考試類.... 我發現,因爲事務automaticaly COMMITED如此給力的承諾,我使用 em.commit()JPA 2.0的EclipseLink檢查獨特
但是,我想知道如何檢查它是否是唯一的。運行查詢不是一個解決方案,因爲它可能是一個instert後檢查,因爲協調....
這是最好的方法來檢查uniqness?
List<Exam_Normal> exam_normals = exam.getExam_Normal();
exam.setExam_Normal(null);
try {
em.persist(exam);
em.flush();
Long i = 0L;
if (exam_normals != null) {
for (Exam_Normal e_n : exam_normals) {
i++;
e_n.setItem(i);
e_n.setId(exam);
em.persist(e_n);
}
}
} catch (Exception e) {
System.out.print("sfalma--");
}
}
d
謝謝你的回覆... 那麼你會怎麼做我的情況? 鎖定沒有幫助,因爲你說.. 考試對象有獨特的collumn工作人員。 如何捕捉錯誤並通知用戶發生了唯一違規? – GorillaApe 2010-04-16 00:26:59
啊,是的,當然,沒有考慮到這一行可能不存在的事實。感謝您指出了這一點。 – 2010-04-17 20:26:00
它確實取決於您的應用程序,但需要記住的一些事情是:如果您可以將該行的創建與單個事務隔離,或使用JPA EntityManager.flush()API,則會在事務開始時插入該行您將節省在交易中的其他更改。如果您擔心失去考試實體中的信息,您可以隨時參考受管實體。事務回滾後,用戶在同一個實例中修復唯一性問題,並將同一個實例合併到新的TXN中的新EntityManager中。 – 2010-04-22 13:04:13