前进的感谢。的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