前進的感謝。的EclipseLink歷史addEndFieldName
我在使用Eclipselink歷史記錄時遇到問題。 addEndFieldName總是變爲空。 addStartFieldName具有正確的時間戳。它適用於插入和更新。當實體被刪除時,歷史表中沒有條目。
請幫我,我與掙扎安靜一段時間
這裏是我的代碼:
import org.eclipse.persistence.annotations.Customizer;
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "id_product")
private Integer idProduct;
.....
和DescriptorCustomizer是
public class TrackHistoryCustomizer implements DescriptorCustomizer {
@Override
public void customize(ClassDescriptor descriptor) {
HistoryPolicy policy = new HistoryPolicy();
policy.addHistoryTableName(descriptor.getTableName(), descriptor.getTableName() + "_history");
policy.addStartFieldName("start_date");
policy.addEndFieldName("end_date");
policy.setShouldHandleWrites(true);
descriptor.setHistoryPolicy(policy);
}
}
這裏是我的歷史表
的輸出id_product起始日期END_DATE 30 2017年3月14日17:19:53.000 「」 30 2017年3月14日17:27:16.000 「」 30 2017年3月14日17:31:32.000 「」
end_date字段始終爲空。刪除操作也不會被插入到表中。
我無法理解它爲什麼會發生。我錯過了什麼嗎?謝謝。
空ENDFIELD似乎表明的最新變化。您的歷史記錄表僅顯示一個ID字段 - ID不可修改,因此記錄的歷史記錄方式不會太多。你如何去除實體? – Chris
我已將id字段和start_date字段作爲歷史記錄表的主鍵。我通過entityManager.remove方法刪除 –
打開日誌並運行一個簡單的測試。堅持一個新的實體在一個事務和提交,然後之後刪除它在其他交易,並顯示日誌的EclipseLink生成 - 它應該記錄它嘗試使用SQL並可能給你的,爲什麼沒有一個歷史記錄條目指示刪除。 – Chris