列表查询中的Hibernate Criteria

时间:2012-09-30 08:29:10

标签: hibernate list criteria

我有2节课。头等舱的汽车有一份乘客名单。我需要一个Hibernate Criteria来返回我有一名乘客的Car。像这样的东西

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();
}

然而,以下不会真的奏效。所以有任何建议如何做到这一点

1 个答案:

答案 0 :(得分:2)

您需要在此处使用Passenger表加入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>