我是玩框架和Ebean ORM的新手。
基本上,我有两个模型,一个是RegUsers
,另一个是RegIds
。在我的注册中,我在Field 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
。
对于我的一个观点,我试图仅显示RegUsers
只有RegId
一次的所有RegId
,但无法弄清楚如何执行此操作。
我接近查询List<RegId> reg = RegId.finder.where().findList();
表,如下所示:
@(regs: List[RegId])
@for(reg <- regs){
<p>@reg.regUsers.email</p>
}
然后通过以下方式查询RegUser.name:
{{1}}
但我无法弄清楚如何只显示不同的记录。有没有办法使用Ebean这样做或我需要写原始的SQL?我将不胜感激任何帮助。
答案 0 :(得分:1)
如果您在RegUsers定义中添加regIds
字段,请执行以下操作:
@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
的{{1}}:
RegId
如果你想找到RegUsers.find.where().isNotNull("regIds.id").findList()
恰好一个 RegUsers
那么你需要编写自定义sql。