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....
}

它是一个旧的遗留类,使用UserRole作为复合键(这意味着它不是一个好的设计,但我们必须忍受它)。所以我有另一个使用@RooIdentifier 的复合键类

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

问题是,在 update.jspx 页面上,我提供了一个字段来更新User位置,表单返回没有异常但返回Useras null

然后我尝试将 user 字段添加回 Position 类(也不是很好的设计,但出于调试目的,因此 User 存在于实体类和 PK 类中),现在应用程序向我抛出异常:

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

调用 TraversableResolver.isReachable() 引发异常

我挖掘了似乎实体类可能缺少 getter/setter 或 id 的异常。由于 getter/setter 都是由 Roo 管理的,所以这应该不是问题,所以我认为问题在于 Spring MVC 如何将主键类转换为前端 jsp 视图的兼容性,反之亦然。

任何提示将不胜感激。

4

1 回答 1

1

在您提供的代码示例中,我没有看到用于自动生成 getter 和 setter 的注释。

既然您提到 Roo 将管理 getter 和 setter,您可以尝试@RooJavaBean在主键类中添加注释吗?

于 2013-03-19T06:37:02.080 回答