2

我是玩框架和 Ebean ORM 的新手。

基本上,我有两个模型一个是RegUsers另一个是RegIds。在我的注册 ID 中,我在 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;
}

ARegId必须有 a RegUser,但 aRegUser不需要有 a RegId。对于我的一个观点,我试图向所有只有一次RegUsers的人展示RegId,但无法弄清楚如何做到这一点。

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

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

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

@(regs: List[RegId])

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

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

4

1 回答 1

1

如果您将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,那么你确实需要编写自定义 sql。 RegId

于 2013-08-05T15:42:11.737 回答