2013-07-31 152 views
2

我是新玩框架和Ebean ORM。外鍵查詢播放!框架2. + ebean

基本上我有兩個模型一個是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。 對於我的一個觀點,我試圖展示所有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?我將不勝感激任何幫助。

回答

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恰好一個RegId然後你需要編寫自定義的sql確實。