2013-07-19 53 views
2

我試圖在同一個實體中創建一個@OneToMany關係。下面是一個示例代碼:Ebean同一個實體中的一對多關係

@Entity 
public class Client extends Model{ 

    private static final long serialVersionUID = 1L; 

    public Client(String username, String email) { 
     super(); 
     this.username = username; 
     this.email = email; 
    } 

    @Id 
    String username; 

    @Required 
    String email; 

    @ManyToOne 
    Client parent; 

    @OneToMany(mappedBy="parent") 
    Set<Client> friends = new HashSet<Client>(); 

    static Finder<String,Client> find = new Finder<String,Client>(String.class, Client.class); 

    public static void create(Client regUser){ 
     regUser.save(); 
    } 

    public static Client getByUsername(String username){ 
     return find.byId(username); 
    } 

    public void addFriend(Client relatedClient){ 
     this.friends.add(relatedClient); 
     relatedClient.update(); 
     this.update(); 
    } 

    /** 
    * @return the username 
    */ 
    public String getUsername() { 
     return username; 
    } 

    /** 
    * @param username the username to set 
    */ 
    public void setUsername(String username) { 
     this.username = username; 
    } 

    /** 
    * @return the email 
    */ 
    public String getEmail() { 
     return email; 
    } 

    /** 
    * @param email the email to set 
    */ 
    public void setEmail(String email) { 
     this.email = email; 
    } 

    /** 
    * @return the friends 
    */ 
    public Set<Client> getFriends() { 
     return friends; 
    } 

    /** 
    * @param friends the friends to set 
    */ 
    public void setFriends(Set<Client> friends) { 
     this.friends = friends; 
    } 

    /** 
    * @return the parent 
    */ 
    public Client getParent() { 
     return parent; 
    } 

    /** 
    * @param parent the parent to set 
    */ 
    public void setParent(Client parent) { 
     this.parent = parent; 
    } 


    /* (non-Javadoc) 
    * @see java.lang.Object#toString() 
    */ 
    @Override 
    public String toString() { 
     return "Client [username=" + username + ", email=" + email + "]"; 
    } 
} 

的問題是,添加新朋友到Client和搜索相同Client憑身份證後,好友列表是不正確更新。

回答

1

我試過你的實體在我已經安裝的現有項目中,它似乎對我來說工作正常。我用java 1.7和Scala 2.10.0使用play 2.1.1。有this issue with enhancement可能會導致您的問題。

+0

附加說明:我爲父母的朋友列表中的客戶端收到空電子郵件字段,但添加了查詢:'Ebean.find(Client.class).fetch(「friends」)。where()。eq(「用戶名「,用戶名).findUnique();'並調用它不會返回電子郵件地址字段的空值。 –

相關問題