0

私は2つのテーブルを持っています。健康とネットワーク

これは私のヘルス テーブル エンティティです。

   @Table(name="health")
   public class Health   implements Serializable {

private static final long serialVersionUID = 1L;

@Id 
@Column(name="hid")
private int hid;

@Column(name="ivid")
private int ivid;

@JoinColumn(name = "nwid")
@ManyToOne(fetch = FetchType.LAZY)
private Networks nwid;

}

ネットワークテーブルに何も利用できないヘルス行をフェッチしようとしています。そのため、ヘルステーブルの行レコードが得られません..

健康からその行が必要であり、そのレコードのネットワークテーブルを調べたくない..

私がcrit.createAliasを使用しないと...サーバーコールの取得に失敗しました。

            try
      {
        session = sessionFactory.openSession();
        Criteria crit = session.createCriteria(Health.class);
        crit.createAlias("nwid", "network");
        crit.createAlias("network.statsId", "stats");
        crit.add(Restrictions.eq("ivid", 0));   
        Iterator<Health> it = crit.list().iterator();
        while(it.hasNext()){
        health  = it.next();

        }
4

1 に答える 1

0

これを変更してみてください:

crit.createAlias("nwid", "network");

crit.createAlias("nwid", "network", CriteriaSpecification.LEFT_JOIN);
于 2013-05-03T03:51:11.307 に答える