16 Ekim 2012 Salı

Hibernate OneToMany Duplicate Sorunu

Java Hibernate kullanarak model içinde OneToMany bir ilişki eklediysek ve criteria kullanarak bu modeli listeleyeceksek criteria nın distinct değer dönmesini sağlamak zorundayız. Aksi halde duplicate kayıtlarla uğraşmak zorunda kalırız. Bunu yapmak için de yapmamız gereken tek şey criteria oluştururken:


DetachedCriteria detachedCriteria = DetachedCriteria.forClass(persistentClass);
detachedCriteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);


gibi bir satır eklemek olacaktır.

Model:


@Column(insertable = false,updatable = false)
@OneToMany(cascade = CascadeType.ALL, mappedBy = "A", fetch = FetchType.EAGER)
private Set list;

Criteria:


DetachedCriteria detachedCriteria = DetachedCriteria.forClass(persistentClass);
detachedCriteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);



Hiç yorum yok: