2012-06-24 5 views
4

EML을 ORM으로 사용하는 Play Framework 2.0을 사용하여 작은 응용 프로그램을 작성했습니다. 그래서 User 클래스와 UserGroup 클래스 사이에 다 대다 관계가 필요합니다.Avaje Ebean. ManyToMany 지연된 BeanSet

@Entity 
public class User extends Domain { 

    @Id 
    public Long id; 
    public String name; 

    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
    public Set<UserGroup> groups = new HashSet(); 
} 



@Entity 
public class UserGroup extends Domain { 

    @Id 
    public Long id;  
    public String name; 

    @ManyToMany(mappedBy="groups") 
    public Set<User> users = new HashSet(); 
} 

데이터베이스 스키마 생성기가 중간 테이블이 코드에 대한 좋은 계획을 생성하고 모든 내가 다 대다을 사용까지, 확실히 확인 일 : 는 여기에 몇 가지 코드입니다.

그래서 나는 하나 개의 요청에 그룹을 추가하고있다 : 다른의 System.out에에

user.groups.add(UserGroup.find.byId(groupId)); 
user.update(); 

그리고 노력 출력을 :

System.out.println(user.groups); 

그리고이 반환

가 BeanSet 연기

빠른 검색은 BeanSet이 Ebean의 지연로드 컨테이너임을 보여줍니다. 그러나 적절한 방식으로 작동하지 않는 것처럼 보이거나 중요한 것을 놓친 것 같습니다.

내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?

답변

9

당신은 잠깐 전에 내가 나 자신을 탐구 한 협회 수동

user.groups.add(UserGroup.find.byId(groupId)); 
user.saveManyToManyAssociations("groups"); 
user.update(); 
+0

을 저장해야합니다. 어쨌든 한 번 더 감사드립니다 :) –