Hibernate注释多对一问题

时间:2011-08-24 15:34:58

标签: java hibernate annotations

我遇到了一对多关系的保存对象问题。在我的问题中,One UserGrop有许多UserPermissions。 Forthat关系船我创建了我的域类:

@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;


}

但是在保存UserGroup时,它也会保存帽子UserPermisions对象。与表没有任何关系(检索UserGroup对象时,它不返回Set of 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)

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

@OneToMany UserGroup.userPermissions mappedBy="userGroup" userGroup。这意味着UserPermisions中的{{1}}属性负责该关系。我猜你没有设置那个属性,保存后它仍然是空的。