gpt4 book ai didi

java - 外键查询玩法!框架 2.+ ebean

转载 作者:行者123 更新时间:2023-11-30 11:30:04 25 4
gpt4 key购买 nike

我是框架和 Ebean ORM 的新手。

基本上,我有两个模型,一个是 RegUsers,另一个是 RegIds。在我的注册 ID 中,我在字段 RegUsers 上放置了多对一关系。说明,如果我没记错的话,一个用户可以拥有多个注册 ID。

RegId 型号:

@Entity 
public class RegId extends Model{
public static Finder<Long,RegId> finder = new Finder<Long,RegId>(Long.class, RegId.class);

@Id
public Long id;

@ManyToOne
public RegUsers regUsers;

public String regId;
}

RegUser 模型:

@Entity 
public class RegUsers extends Model{

public static Finder<Long,RegUsers> find = new Finder<Long,RegUsers>(Long.class, RegUsers.class);

@Id
public Long id;

public String email;
public String name;
}

一个RegId 必须有一个RegUser,但是一个RegUser 不需要有一个RegId。对于我的一个观点,我试图向所有拥有 RegIdRegUsers 显示一次,但不知道如何执行此操作。

我接近于像这样查询 RegId 表:

List<RegId> reg = RegId.finder.where().findList();

然后通过以下方式查询 RegUser.name:

@(regs: List[RegId])

@for(reg <- regs){
<p>@reg.regUsers.email</p>
}

但我不知道如何只显示不同的记录。有没有办法使用 Ebean 来做到这一点,或者我需要编写原始 sql 吗?我将不胜感激任何帮助。

最佳答案

如果您将 regIds 字段添加到您的 RegUsers 定义中,如下所示:

@Entity 
public class RegUsers extends Model{

public static Finder<Long,RegUsers> find = new Finder<Long,RegUsers>(Long.class, RegUsers.class);

@Id
public Long id;

public String email;
public String name;

@OneToMany(mappedBy="regUsers")
public Set<RegId> regIds;
}

您可以像这样查询 RegUsers 至少一个 RegId:

RegUsers.find.where().isNotNull("regIds.id").findList()

如果你想找到 RegUsers exactly one RegId 那么你确实需要编写自定义 sql。

关于java - 外键查询玩法!框架 2.+ ebean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17981766/

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