0

これは私の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と休止状態を実行するにはどうすればよいですか? 正しい構成は何ですか?

(現在、セッションが注入されていないため、NullPointerException が発生しています。)

ご助力ありがとうございます!

ここにいくつかのより多くの文脈があります:

「依存先」を持つ「タスク」と呼ばれるBeanクラスがあります(すべて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 を使用したくありません (別のリレーションが周期的になるため、使用できません)。休止状態プラグインを使用しない場合、JSP がレンダリングする前にアクション/コントローラーがセッションを閉じてしまい、遅延フェッチが機能しないため、JSP 経由で依存先にアクセスできません。したがって、jsp がレンダリングされたにセッションを閉じるには、hibernate プラグインが必要です。

問題は、hibernate プラグインに、セッション オブジェクトをクラスに挿入する必要があることを伝える方法がわからないことです。必要に応じて既に注釈が付けられていますが(私は推測します)、休止状態プラグインはそれを見ていません。

public class TaskDAO {

@SessionTarget
Session session;

@TransactionTarget
Transaction transaction;

...
}

これが問題の場合: 可能な限り xml で注釈を使用します...

残りのプラグインと休止状態のプラグインが(同時に)作業を行うには、正しい構成が必要だと思います!

4

1 に答える 1

0

わかった!私が欠けていた部分は行です

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

これにより、すべての REST コントローラーに hibernate-default パッケージが提供されます!

hibernate-4.1 で fullhibernate-plugin を再コンパイルした後、使用できるようになりました。遅延初期化はまだ機能していませんが、私はさらに一歩進んでいます:-)

于 2013-03-20T00:19:52.620 に答える