在OSIV Web环境中使用JPA/Hibernate让我感到很疯狂 ;)
以下是场景:我有一个通过JPA加载的实体A,它有一组B实体。这些B实体有一个必填字段。
当用户通过Web应用程序中的链接向A添加新的B时,该必填字段未设置(因为没有合理的默认值)。
在下一个http请求时,OSIV过滤器尝试合并A实体,但由于Hibernate抱怨新的B未设置必填字段,因此失败了。
阅读JPA规范,我没有看到这些检查在合并阶段是必需的(我没有活动事务)。我不能将B的集合保留在A之外,只有当用户按下“保存”(即entitymanager.persist())时将它们添加到A中,因为保存按钮所在的位置不知道B,只知道A。此外,A和B只是示例,我在许多地方都有类似的东西... 有什么想法吗?其他JPA实现在这里表现相同吗?提前感谢。
以下是场景:我有一个通过JPA加载的实体A,它有一组B实体。这些B实体有一个必填字段。
当用户通过Web应用程序中的链接向A添加新的B时,该必填字段未设置(因为没有合理的默认值)。
在下一个http请求时,OSIV过滤器尝试合并A实体,但由于Hibernate抱怨新的B未设置必填字段,因此失败了。
javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value
阅读JPA规范,我没有看到这些检查在合并阶段是必需的(我没有活动事务)。我不能将B的集合保留在A之外,只有当用户按下“保存”(即entitymanager.persist())时将它们添加到A中,因为保存按钮所在的位置不知道B,只知道A。此外,A和B只是示例,我在许多地方都有类似的东西... 有什么想法吗?其他JPA实现在这里表现相同吗?提前感谢。