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
、位置を更新するフィールドを指定すると、フォームは例外を返さずにUser
as を返すことnull
です。
次に、ユーザー フィールドを Position クラスに追加しようとしました (デザインも良くありませんが、デバッグ目的のため、ユーザーはエンティティ クラスと PK クラスの両方に存在します)。アプリケーションは例外をスローします。
javax.validation.ValidationException: Call to TraversableResolver.isReachable() threw an exception
TraversableResolver.isReachable() の呼び出しで例外がスローされました
エンティティ クラスにゲッター/セッターまたは ID がない可能性があるという例外について掘り下げます。getter/setter はすべて Roo によって管理されているので問題にはならないので、Spring MVC が主キー クラスをフロント エンド jsp ビューに変換する方法との互換性に問題があると考えています。
ヒントをいただければ幸いです。