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

但是,以下内容不会真正起作用。所以任何建议如何做到这一点

4

1 回答 1

2

您需要在此处将 Car 表与 Passenger 表连接起来,这可以使用标准 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>.

于 2012-09-30T08:54:19.063 回答