2015-08-21 58 views
0

我已成功創建實體(和相應的數據表)之類的下列之一:JPA,存儲實體與多對一外鍵

@XmlRootElement 
@Entity 
@Table(name = "USERS_BOOK") 
public class UsersBook { 

@Id 
@Column(name = "ID") 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =  "USERS_BOOK_SQ") 
private long    id; 

@ManyToOne(fetch = FetchType.EAGER, optional = true) 
private Room   room; 

@ManyToOne(fetch = FetchType.EAGER, optional = true) 
private Building  building; 

它創建具有2個外鍵的表(ROOM_ID和building_id)到相應的實體(房間和大樓)。

現在我想存儲一個已經存儲在我的數據庫中的與房間和建築物鏈接的新UsersBook。

我已經知道房間表和建築物表中一行的主鍵(ID)。

我如何告訴JPA使用我已經擁有的房間和建築物的外鍵?

我希望我已經夠清楚了。

謝謝你們!

回答

1

使用EntityManager.find()(在數據庫中發現它們確實)或EntityManager.getReference()(獲得一個未初始化的代理,假設他們不存在於數據庫中):

Room room = em.getReference(Room.class, roomId); 
Building building = em.getReference(Building.class, buildingId); 
UsersBook book = new UsersBook(); 
book.setRoom(room); 
book.setBuilding(building); 
em.persist(book); 
相關問題