2012-09-30 163 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的正确和快速的反应(以及提示),将牢记这是肯定的。干杯 –