我读了 https://archive-avaje-org.github.io/ebean/introquery_joinquery.html 看示例 A,我注意到没有指定内连接公共(public)列。我认为他们的 fetch-tablename 语法会导致 Ebean 查看 2 个表必须内部连接的列。然后他们将每个结果存储为一个订单?他们加入了 2 个表,那么他们如何将客户表中的列存储为订单?

我试图在我的代码中与 ebean 进行内部连接,但发现至少我的一个假设是错误的。我有 2 张 table ,一张 Street table 和一张 House table (一对多关系)。 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'

最佳答案

我相信您只是在 where ExpressionList 中直接引用该表以需要内部联接,例如:

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

这假设您有一个与此类似的 House 实体设置:
@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;

    ...
}

关于playframework - 在 Ebean 中加入内部连接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20457420/

10-11 05:20