内部联接如何在Ebean中工作?

时间:2013-12-08 18:46:46

标签: playframework playframework-2.0 ebean

我读过http://www.avaje.org/ebean/introquery_joinquery.html;看一下例A,我注意到没有内部连接公共列的规范。我认为他们的fetch-tablename语法会导致Ebean查看2个表对内连接的列。然后他们将每个结果存储为订单?他们正在加入2个表,那么他们如何将客户表中的列存储为订单?

我尝试在我的代码中使用ebean进行内部联接,发现至少有一个假设是错误的。我有2张桌子,一张街道桌子和一张House桌子(一对多关系)。 House表中的street_id列是Street表的id列的外键。我试图想出这个sql的Ebean等价物:

SELECT s.name, h.owner, h.isSubscriber FROM Street as s INNER JOIN House as h WHERE     
h.street_id=s.id AND h.isNew='false'

1 个答案:

答案 0 :(得分:6)

我相信你只是直接在where ExpressionList中引用表来要求内连接,例如:

Ebean.find(House.class)
     .select("street.name, owner, isSubscriber")
     .where()
     .eq("street.id", s.id)
     .eq("isNew", false)
     .findList();

这假设您有一个类似于此的House Entity设置:

@Entity 
public class House extends Model {

    @Id 
    public Long id;

    @ManyToOne
    public Street street;

    ...
}

像这样的街道实体:

@Entity 
public class Street extends Model {

    @Id 
    public Long id;

    @OneToMany(mappedBy = "street")
    public List<House> houses;

    ...
}