2011-08-24 66 views
0

我在保存一對多關係的對象時遇到了一些問題。在我的問題一個UserGrop有很多UserPermissions。 Forthat關係船我已創建我的領域類是這樣的:Hibernate註釋多對一問題

@Entity 
@Table(name = "tbl_usergroup") 
public class UserGroup implements Serializable { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO)  
    @Column(name="userGroupId") 
    private long userGroupId; 

    @Column(name = "userGroupName") 
    private String userGroupName; 

    @OneToMany(cascade=CascadeType.ALL,mappedBy="userGroup",fetch=FetchType.EAGER) 
    private Set<UserPermissions> userPermissions = new HashSet<UserPermissions>(0); 



} 

@Entity 
@Table(name = "tbl_group_permissions") 
public class UserPermissions implements Serializable { 

    @Id 
    @GeneratedValue 
    private Long userPermissionId; 

    @ManyToOne(cascade =CascadeType.ALL)  
    @JoinColumn(name="userGroupId",nullable=false) 
    @ForeignKey(name = "userGroupId") 
    private UserGroup userGroup; 


} 

但是當保存用戶組,將其保存帽子UserPermisions對象也。與表格沒有任何關係(當檢索UserGroup對象時,它不返回UserPermisions對象集合)。

DB:

+------------------+-------------+ 
--+ 
| userPermissionId | userGroupId | 
e | 
+------------------+-------------+ 
--+ 
|    33 |  NULL | 
    | 
|    34 |  NULL | 
    | 
|    35 |  NULL | 
    | 
|    36 |  NULL | 
    | 
|    37 |  NULL | 
    | 
|    38 |  NULL | 
    | 
|    39 |  NULL | 
    | 
|    40 |  NULL | 
    | 
+------------------+-------------+ 
--+ 
8 rows in set (0.00 sec) 

任何機構可以幫我解決這個問題呢?

回答

0

@OneToManyUserGroup.userPermissions您有mappedBy="userGroup"。這意味着UserPermisions中的userGroup財產負責該關係。我想你不要設置該屬性,並保存它仍然爲空。

+0

我只保存UserGroup對象,我已經設置了8個UserPermisions對象,只保存UserGroup對象。我沒有單獨保存UserPermisions對象。 – Chandana

+0

@Chandana是的,但是'Cascade.ALL'意味着保存事件被級聯,因此UserPermissions也被保存。不過,你需要保存UserPermissions,因爲它們負責關係(並且不要忘記填充'userGroup'字段)。 – Thomas

+0

我對此有一些疑問? 爲什麼需要將UserGroup對象設置爲UserPermisions對象? – Chandana