gpt4 book ai didi

java - 使用 Play Framework 和 Ebean 的复杂连接

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:16 26 4
gpt4 key购买 nike

我正在使用 PlayFramework,我非常喜欢它。当我想从表中获取数据时,例如我有一个 user 表,我使用以下语法:

List<User> users = User.find.where().eq("email", email).findList();

我的问题是,当我获得用户对象时,我有一个 id 列。使用该 id 值,我可以映射到其他表,并且这些表的 id 可以映射到更多表,因此跨多个表连接的基本概念。有没有我可以阅读的示例或地方,它描述了如何使用类似上述的语法来实现它?

我试图找到自己,但找不到,目前我能想到的唯一方法是使用带有准备好的语句的直接 sql,我不想这样做。

最佳答案

你好卡尔维什

Relationships 模型之间的关系是使用常见的 JPA 注释设置的,例如 @OneToMany@ManyToOne@OneToOne、等

因此,如果您有用于用户表的 User.java 模型和用于用户问题的 Question.java 模型,您可以使用 @OneToMany 加入它们(一个用户有很多问题)

用户

@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;
}

当您在 Controller 中选择一个用户时,Ebean 将默认执行“连接”并获取所有用户的问题:

User user = User.find.where().eq("email", email).findUnique();
List<Question> usersQuestion = user.questions;

默认情况下,Ebean 获取所有对象的属性和关系,因此您无需创建子查询。当然,您可以甚至应该只选择/获取当前所需的数据。

official Ebean documentation page您会发现相当不错的引用指南 (pdf)11.6.2 关系部分提供了关系的一般描述。

4.1.2 Query 部分有一个示例(第二个)演示了如何使用 select()fetch( )

关于java - 使用 Play Framework 和 Ebean 的复杂连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10792853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com