1

私は2つのクラスを持っています。ファーストクラスの車には乗客のリストがあります。乗客が 1 人いる Car を返す Hibernate Criteria が必要です。だから、このようなもの

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

もう 1 つのヒント: 乗客は車に 1 人しか乗れないと思うのでSet<Passenger>List<Passenger>.

于 2012-09-30T08:54:19.063 に答える