我读了 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/