2012-09-30 105 views
1

我有2個類。頭等車有一列乘客。我需要一個休眠標準,它將返回我有一名乘客的汽車。因此,像這樣列表查詢中的休眠標準

class Car { 

    @Id 
    private Long id; 
    @OneToMany 
    private List<Passenger> passengers; 
} 

而且在Hibernate類

@Override 
public Car retrieve(Passenger passenger) { 
    Criteria criteria = super.createCriteria(); 
    criteria.add(Restrictions.eq("passengers", passenger)); 
    return (Car ) criteria.uniqueResult(); 
} 

但是下面慣於真正發揮作用。因此,任何建議如何做到這一點

回答

2

你需要在這裏加入乘客表的Car表,這可以通過標準API的別名來完成。你應該嘗試以下方法:

@Override 
public Car retrieve(Passenger passenger) { 
    Criteria criteria = super.createCriteria(); 
    criteria.createAlias("passengers", "p"); 
    criteria.add(Restrictions.eq("p.id", passenger.getId())); 
    return (Car) criteria.uniqueResult(); 
} 

另一個祕訣:我認爲,乘客只能在車上出現一次,所以我寧願Set<Passenger>,而不是List<Passenger>

+1

Tnx的正確和快速的反應(以及提示),將牢記這是肯定的。乾杯 –