SORU
3 Ocak 2010, Pazar


Hazırda Kriterleri çocuklar FetchType ile birden çok kez döner.İSTEKLİ

OrderTransactions listesi Order bir Dersim var ve bir-çok gibi Hazırda eşleme: bir ile eşleştirilmiş

@OneToMany(targetEntity = OrderTransaction.class, cascade = CascadeType.ALL)
public List<OrderTransaction> getOrderTransactions() {
    return orderTransactions;
}

Bu Order'nin de aşağıdaki Kriterleri filtreleme için kullanılan 8* *bir alan var:

public List<Order> getOrderForProduct(OrderFilter orderFilter) {
    Criteria criteria = getHibernateSession()
            .createCriteria(Order.class)
            .add(Restrictions.in("orderStatus", orderFilter.getStatusesToShow()));
    return criteria.list();
}

Bu çalışır ve sonuç olarak excpected.

Şimdiişte benim sorum: Türü açıkça 10**, Orderyapasın diye ayarlanmış zaman, neden, sonuç listesinde birden çok kez s görünür?

@OneToMany(targetEntity = OrderTransaction.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
public List<OrderTransaction> getOrderTransactions() {
    return orderTransactions;
}

Nasıl değiştirmek zorunda kriterim Yeni ayar ile aynı sonuca ulaşmak için bir kod ki?

CEVAP
4 Ocak 2010, PAZARTESİ


Eran ile bahsedilen, istediğiniz davranış için başka bir yol ek olarak, sonuç trafo ayarlamak için:

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Submissions101

    Submissions1

    23 ŞUBAT 2007