在休眠

时间:2016-04-28 12:54:21

标签: mysql spring hibernate

我正在使用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

0 个答案:

没有答案