我有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();
}
然而,以下不会真的奏效。所以有任何建议如何做到这一点
答案 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>
。