【问题标题】:eclipselink historypolicy blob fieldeclipselink historypolicy blob 字段
【发布时间】:2012-03-17 22:17:56
【问题描述】:

我正在使用 eclipselink JPA 创建应用程序,我正在使用 HistoryPlicy 创建历史数据。一切正常,但我在将 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生成的sql语句

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]

注意两个相同的语句选择更新内容(这两个语句用于 STAFF_ATTACHMENT 表)

【问题讨论】:

    标签: jpa eclipselink


    【解决方案1】:

    似乎是 EclipseLink 对历史记录的支持以及对 Oracle 平台的 LOB 定位器支持的问题。

    请记录一个错误,但如果您使用的是 Oracle 11,那么我认为 LOB 现在可以在没有定位器的情况下工作,因此不再需要解决方法。尝试将平台设置为Oracle11,或者只使用不使用定位器的OraclePlatform。

    【讨论】:

    • 但是如何设置平台?
    • 我想通了: 它工作正常 :) 谢谢你非常詹姆斯
    猜你喜欢
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2013-12-27
    • 2012-03-09
    • 2011-06-22
    • 2011-07-31
    • 2017-06-14
    相关资源
    最近更新 更多