如何使用弹簧休息和休眠插件?

时间:2013-03-19 01:42:59

标签: spring hibernate rest

这是关于struts.xml中的配置:

其余插件建议使用

<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,因为我的Session没有被注入。)

非常感谢你的帮助!

以下是更多背景信息:

我有一个名为“Task”的bean类,它有“Dependees”(全部通过Hibernate管理)

@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访问dependees,因为Action / Controller在JSP呈现之前已经关闭了会话,然后延迟提取不起作用。 因此我需要hibernate插件 - 在呈现jsp之后关闭会话

问题是我不知道如何告诉hibernate插件它应该将会话对象注入我的类。它已经注释了(我猜)但是hibernate插件只是不看它。

public class TaskDAO {

@SessionTarget
Session session;

@TransactionTarget
Transaction transaction;

...
}

如果这是一个问题:我尽可能在xml上使用注释...

我认为我只需要正确配置其余的和hibernate插件来完成他们的工作(同时)!

1 个答案:

答案 0 :(得分:0)

好!我缺少的部分是行

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

为每个REST控制器提供hibernate-default包!

使用hibernate-4.1重新编译fullhibernate-plugin后,我现在可以使用它了。懒惰的初始化暂不起作用,但我更进了一步: - )