Встраиваемый в ElementCollection
У меня есть класс 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; }
Когда я обновляю сущность и / или ее сабы, Hibernate генерирует запрос на обновление / удаление SQL, где присутствуют все поля из Embeddable. Я понимаю, почему он это делает, но это не очень хорошо в этом случае, потому что Hibernate пытается сравнить значение CLOB с оператором = Могу ли я как-то сказать Hibernate игнорировать значение поля (CLOB) и использовать только контрольную сумму (которая была создана для этой цели и это хэш md5, вычисленный из clob, так что его достаточно для сравнения) где предложения в запросах? Или у вас, ребята, есть другие идеи, как это решить?