1

Spring MVC/Apache Tiles を使用して問題を特定しました。

update.jspx は、複合キーを持つ現在のエンティティ (Position.java) の更新フォームを提示します。

@RooJpaActiveRecord(persistenceUnit = "theUnit", transactionManager = "theManager", table = "theTable", identifierType = PositionPK.class)
Class Position{
    //User user;
    //Role role;
    //other fields....
}

Userこれはandを複合キーとして使用する古いレガシー クラスRoleです (つまり、これは適切な設計ではありませんが、それを使用する必要があります)。だから私は @RooIdentifier を使用して別の複合キークラスを持っています

@RooIdentifier
Class PositionPK extends Serializable {
    User user;
    Role role;
    //override equals and hashCode blahblah...
}

問題は、 update.jspx ページでUser、位置を更新するフィールドを指定すると、フォームは例外を返さずにUseras を返すことnullです。

次に、ユーザー フィールドを Position クラスに追加しようとしました (デザインも良くありませんが、デバッグ目的のため、ユーザーはエンティティ クラスと PK クラスの両方に存在します)。アプリケーションは例外をスローします。

javax.validation.ValidationException: Call to TraversableResolver.isReachable() threw an exception

TraversableResolver.isReachable() の呼び出しで例外がスローされました

エンティティ クラスにゲッター/セッターまたは ID がない可能性があるという例外について掘り下げます。getter/setter はすべて Roo によって管理されているので問題にはならないので、Spring MVC が主キー クラスをフロント エンド jsp ビューに変換する方法との互換性に問題があると考えています。

ヒントをいただければ幸いです。

4

1 に答える 1

1

提供したコードサンプルに、ゲッターとセッターを自動的に生成するためのアノテーションが表示されません。

Rooがゲッターとセッターを管理するとおっしゃってい@RooJavaBeanましたが、主キークラスにアノテーションを追加してみてください。

于 2013-03-19T06:37:02.080 に答える