0

我有两张桌子。健康与网络

这是我的健康表实体:

   @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 回答