可嵌入ElementCollection中

时间:2013-01-24 15:36:29

标签: java hibernate clob embeddable

我有Embeddable类,看起来像这样:

public class ClobEmbeddableValue {

    ...fields...

    @Lob
    @Type(type = "org.hibernate.type.MaterializedClobType")
    @Column(name = "clobValue")
    @Override
    public String getValue() { return value; }

    public String getChecksum() { return checksum; }

    ...other getters/setters...
}

,这在实体中用作

@ElementCollection
@ForeignKey(name = "fk_clob")
@CollectionTable(name = "m_clob", joinColumns = {
        @JoinColumn(name = "owner_id"), 
        @JoinColumn(name = "owner_oid"),
        @JoinColumn(name = "ownerType")})
@Cascade({org.hibernate.annotations.CascadeType.ALL})
public Set<ClobEmbeddableValue> getClobs() { return clobs; }

当我更新实体和/或它的clobs时,hibernate生成更新/删除SQL查询,其中存在来自Embeddable的所有字段。我明白为什么会这样做,但在这种情况下这不是很好,因为Hibernate试图将CLOB值与operator =进行比较 我可以以某种方式告诉hibernate忽略字段值(CLOB)并且只使用校验和(为此目的而创建它是从clob计算的md5哈希值,因此它足以进行比较)在查询中的where子句中? 或者你们有其他想法如何解决这个问题?

0 个答案:

没有答案