我正在使用Spring MVC,Hibernate来存储2个实体 - FacilityMember和User。业务要求是这样的:一旦条目被插入到' FacilityMember'然后'用户'应插入条目,并将其电子邮件ID作为用户名插入。
我有从FacilityMember到User的单向映射。我需要User-> id才能在我的服务层内进行一些进一步的操作。在休眠持续存在之后,我确实获得了FacilityMember的ID,但是我获得了FacilityMember-> User-> Id的0。
代码段如下:
我的设施会员
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
//other attributes
@OneToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
@Cascade(CascadeType.SAVE_UPDATE)
@JoinColumn(name = "userId")
private User user;
//getters setters
我的用户实体
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Size(min = 4, max = 30)
private String username;
//getters setters
我的服务层有方法级事务,调用Dao层代码。
User user = new User();
user.setUsername(userName);
facilityMember.setUser(user);
persist(facilityMember);
return facilityMember;
在服务层内,我的facilityMember-> id具有适当的值但是 facilityMember-> User-> id为0.数据被正确存储到mysql表中。
Hibernate查询以下列方式执行
Insert FacilityMember ...
Insert User ..
Update FacilityMember ..
出了什么问题 - 如何获取我映射的实体的新插入ID?
提前致谢
Manisha