0
我使用eclipselink JPA创建应用程序,我使用HistoryPlicy创建历史数据。每一件事情都很好,但我面临将blob数据复制到历史记录表的问题。eclipselink historypolicy blob字段
@Entity
@Customizer(AttachmentHistoryPolicy.class)
@Table(name = "STAFF_ATTACHMENT", catalog = "", schema = "OIA")
public class Attachment implements Serializable {
@Id
private Long id;
@Basic(optional = false)
@NotNull
@Lob
@Column(name = "CONTENTS")
private byte[] contents;
// getters and setters
}
public class AttachmentHistoryPolicy implements DescriptorCustomizer {
@Override
public void customize(ClassDescriptor cd) throws Exception {
HistoryPolicy policy = new HistoryPolicy();
policy.addHistoryTableName("HIST_STAFF_ATTACHMENT");
policy.addStartFieldName("HIST_START_DATE");
policy.addEndFieldName("HIST_END_DATE");
policy.setShouldHandleWrites(true);
//policy.useDatabaseTime();
cd.setHistoryPolicy(policy);
}
}
该行插入历史表中,但与空blob !!!
有没有办法处理这个使用eclipselink HistoryPolicy?
编辑:
以下是通过的EclipseLink
BEGIN INSERT INTO OIA.STAFF_ATTACHMENT (ID, CONTENT_TYPE, CONTENTS, FILE_NAME, FILE_SIZE, OWNER, STAFF_MEMBER) VALUES (?, ?, ?, ?, ?, ?, ?) RETURNING CONTENTS INTO ?; END;
SELECT CONTENTS FROM OIA.STAFF_ATTACHMENT WHERE (ID = ?) FOR UPDATE
INSERT INTO HIST_STAFF_ATTACHMENT (ID, CONTENT_TYPE, CONTENTS, FILE_NAME, FILE_SIZE, OWNER, STAFF_MEMBER, HIST_START_DATE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
SELECT CONTENTS FROM OIA.STAFF_ATTACHMENT WHERE (ID = ?) FOR UPDATE
bind => [1 parameter bound]
音符生成的SQL语句丝束用于更新选择内容相同语句(该两个语句是用于STAFF_ATTACHMENT表)
但我该如何设置平台? – 2012-03-20 10:51:51
我想通了: 它工作正常:)非常感谢詹姆斯 –
2012-03-20 11:22:52