[英]Complex joins using Play Framework and Ebean
我正在使用PlayFramework,我真的很喜歡它。 當我想從表中獲取數據時,例如我有一個user
表,我使用以下語法:
List<User> users = User.find.where().eq("email", email).findList();
我的問題是,當我獲得用戶對象時,我有一個id
列。 使用該id
值,我可以映射到其他表,並且這些表的id
可以映射到更多表,因此跨多個表連接的基本概念。 是否有任何示例或地方我可以閱讀它描述如何使用上述語法實現它?
我試圖找到自己而不能,只有這樣我才能想到它是使用直接sql與准備好的語句,我寧願不做。
ellou'kalvish
Relationships
模型之間設置與普通JPA注釋像@OneToMany
, @ManyToOne
, @OneToOne
等。
因此,如果你有用戶表的User.java
模型和用戶Question.java
模型,你可以加入@OneToMany
(一個User
有很多Question
)
用戶
@Entity
public class User extends Model {
@Id
public Long id;
public String email;
@OneToMany
public List<Question> questions;
}
題
@Entity
public class Question extends Model {
@Id
public Long id;
public String question;
}
當您在控制器中選擇用戶時,Ebean將默認執行“加入”,並且還將獲取所有用戶的問題:
User user = User.find.where().eq("email", email).findUnique();
List<Question> usersQuestion = user.questions;
默認情況下,Ebean會獲取所有對象的屬性和關系,因此您無需創建子查詢。 當然,您甚至可以選擇/獲取當前所需的數據。
在官方的Ebean文檔頁面上,你會發現很好的參考指南(pdf) ,關系的一般描述見11.6.2 Relationships
。
在4.1.2 Query
節4.1.2 Query
有一個示例(第二個)演示如何使用select()
和fetch()
來獲取“部分”對象
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.