2013-03-19 67 views
0

這是關於我的struts.xml配置:如何使用spring2與休息和休眠插件?

其餘插件推薦使用

<constant name="struts.mapper.class" value="rest" /> 
<constant value="Controller" name="struts.convention.action.suffix" /> 
<constant value="true" name="struts.convention.action.mapAllMatches" /> 
<constant value="rest-default" name="struts.convention.default.parent.package" /> 
<constant value="rest" name="struts.convention.package.locators" /> 

不使用軟件包了。他們都是通過公約插件找出來的。 fullhibernate-plugin告訴我使用

<package name="default" extends="hibernate-default"> 

雖然。

如何整合這個以獲得REST hibernate的運行?什麼是正確的配置?

(目前我得到一個NullPointerException,因爲我的會話沒有注入。)

非常感謝您的幫助!

下面是一些更多的上下文:

我有一個名爲「任務」有「Dependees」的bean類(全部通過休眠管理)

@ManyToMany(fetch=FetchType.LAZY) 
@JoinTable(name = "TASKLIST_TASK", 
    joinColumns = @JoinColumn(name = "TASK_ID"), 
    inverseJoinColumns = @JoinColumn(name = "TASKLIST_ID")) 
private Set<Task> dependees; 

這是一個相當龐大的整套所以我不想使用FetchType.EAGER(我也不能,因爲另一個關係會使它循環)。當我不使用hibernate插件時,我無法通過JSP訪問依賴項,因爲在JSP呈現之前操作/控制器已經關閉了會話,然後懶惰讀取不起作用。 因此我需要hibernate插件 - 在之後關閉會話jsp已呈現。

問題是我不知道如何告訴hibernate插件它應該將會話對象注入到我的類中。它已經註釋了,因爲它應該(我猜),但hibernate插件只是不看它。

public class TaskDAO { 

@SessionTarget 
Session session; 

@TransactionTarget 
Transaction transaction; 

... 
} 

如果這是一個問題:我使用的標註了XML的地方我可以...

我想我只是需要休息的正確配置和Hibernate插件做好自己的工作(同時) !

+0

讓我們知道你研究。順便說一句,看起來問題是由於嘗試序列化休眠懶東西 – dgregory 2013-03-19 06:10:39

+0

嗨dgregory,我認爲問題是關於hibernateplugin沒有注入它的會話......我訪問會話時得到一個愚蠢的空指針 - 添加一些更多的上下文! – clemens 2013-03-19 10:09:20

回答

0

好吧!我丟失的部分是行

<constant value="hibernate-default" name="struts.convention.default.parent.package" /> 

這給每個REST控制器的hibernate默認包!

用hibernate-4.1重新編譯fullhibernate-plugin後,我現在可以使用它了。懶惰初始化是stil不起作用,但我更進一步:-)