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

Huk*_*ABA 4 playframework ebean playframework-2.0

我读了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'
Run Code Online (Sandbox Code Playgroud)

jcr*_*son 6

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

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

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

@Entity 
public class House extends Model {

    @Id 
    public Long id;

    @ManyToOne
    public Street street;

    ...
}
Run Code Online (Sandbox Code Playgroud)

像这样的街道实体:

@Entity 
public class Street extends Model {

    @Id 
    public Long id;

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

    ...
}
Run Code Online (Sandbox Code Playgroud)