Hibernate Natural Id и кеш 2-го уровня

Я пытаюсь использовать Hibernate 4 с ehcache. У моих объектов есть несколько полей Id, которые не являются первичными ключами в моей БД.

@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Table(name = "tbl_a")
public class A {

  @Id
  private Integer uniqueId;

  @NaturalId
  private Date insertDate;

  @NaturalId
  private Integer businessId;

  ...

}

Я хочу, чтобы этот объект был кэширован, но он кэшируется полем @ID, а не комбинацией @NaturalIds

Есть ли способ заставить это работать?

Спасибо идоб


person Ido Barash    schedule 31.01.2013    source источник


Ответы (1)


Попробуйте переместить insertDate и businessId в составной ключ. Объекты, загруженные через session.load(...), могут храниться в кеш-памяти 2-го уровня.

person mindas    schedule 01.02.2013