2010-07-29 46 views
1

我正在創建一個應用程序,人們可以在其中發佈評論或文章,用戶可以評價文章是否對他們有幫助。使用Hibernate加入表格

我現在有看起來像這樣的(非相關細節省略)兩個實體:

Article.java 

@Entity 
Article 

@Id 
private int article_id 

@ManyToOne 
@JoinColumn(name="user_id") 
private User user; 

User.java 
@Entity 
User 

@Id 
private int user_id 

我想辦法知道用戶是否已經「投」上的一篇文章有​​兩個原因, 1.不讓他們投票兩次,2.提出其他可能有用的文章。

我帶條和用戶每次提到更新我叫User_Article對象(它只有兩列,和的article_id USER_ID)級聯選項中的每個對象一個@OneToMany關係實驗,但是,我不斷收到一個當級聯發生時LazyInitilizationException

我正在尋找任何冬眠大師指導在這個問題上的實現和體系結構。

回答

1

嘗試

@OneToMany(fetch=FetchType.EAGER) 

然而,這是很好的避免的大集合預先加載。這就是爲什麼要保持懶惰,並且只有在確定需要它時才使用Hibernate.initialize(..)進行初始化。或者使用HQL查詢,如:

SELECT entity FROM Entity entity JOIN entity.collection 
+0

感謝您的回覆。但是,我會將其添加到我的代碼中,但從架構角度來看,這是處理我的情況的好方法嗎?我認爲這可能是矯枉過正,但是,我無法找到足夠好的理由。 – 2010-07-29 12:14:36

+0

看到我的更新.. – Bozho 2010-07-29 12:17:05

+0

謝謝!我有點在應用程序的會話方面掛了。我想我要做的是在服務層返回到我的控制器之前更新「選票」的集合。 – 2010-07-29 12:21:51