2016-03-09 21 views
1

我有下表,目前我可以更新User對象來添加或刪除一個角色,但是當創建一個新用戶時我不能添加一個角色(用戶的角色是因爲中間表User_Role期望用戶對象的ID,所以自然插入我得到一個User.User_ID =?。保存後插入多對多表

有沒有什麼常見的方法可以解決這個問題?我想也許試圖在保存後獲取插入用戶的ID,然後調用我的更新函數。我不想這樣做,因爲我擔心性能,特別是將來可能會發生批量上傳。

我在我的userRepository上使用CrudRepository。

enter image description here

if(userRequest.getUser().getIdUser() <= -1){ 
     newUser.setIdUser(0); 
     newUser.setIsActiveUs(true); 
     newUser.setDateOfJoin(getCurrentDate()); 
     nuser = usersRepository.save(newUser); 
     //Get created user and send it to update() with the roleList? 
} 

回答

0

是那裏的UserRole具有任何價值還是僅僅是一個外部參考的數據?我可能只是完全擺脫UserRole,創建一個到多個或一對一映射從用戶 - >角色,並創建一個共享的auto_increment id。通過這種方式,您可以將數據級聯到插入到用戶的角色 - 全部在一個事務中。

+0

UserRole存在,因爲用戶可以在此應用程序中擁有多個角色。 –

+0

我認爲你可以在一次交易中完成這一切,但我必須看到映射。您似乎可以使用來自用戶 - >用戶角色的OneToOne和用戶角色的OneToMany - >角色和角色許多角色 - >用戶角色級聯所有這些操作。 – neal

+0

我正在嘗試以下方法http://stackoverflow.com/questions/15943783/how-to-save-a-new-entity-that-refers-existing-entity-in-spring-jpa我會看看這是怎麼回事作品。問題是應用程序的架構應儘可能少地改變。 –