我遇到了一对多关系的保存对象问题。在我的问题中,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)
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
@OneToMany
UserGroup.userPermissions
mappedBy="userGroup"
userGroup
。这意味着UserPermisions
中的{{1}}属性负责该关系。我猜你没有设置那个属性,保存后它仍然是空的。