Ebean在同一实体中的一对多关系

时间:2013-07-19 00:19:50

标签: java playframework playframework-2.0 ebean

我正在尝试在同一实体中创建@OneToMany关系。以下是示例代码:

@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添加新朋友并按ID搜索相同的Client后,朋友列表未正确更新。

1 个答案:

答案 0 :(得分:1)

我在我设置的现有项目中尝试了您的实体,它似乎对我来说很好。我正在使用java 2.1和java 1.7以及Scala 2.10.0。 this issue with enhancement可能导致您的问题。