簡體   English   中英

使用Play Framework和Ebean進行復雜連接

[英]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 Query4.1.2 Query有一個示例(第二個)演示如何使用select()fetch()來獲取“部分”對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM