【发布时间】:2010-05-10 09:26:43
【问题描述】:
在 OSIV Web 环境中使用 JPA/Hibernate 让我发疯;)
以下场景:我有一个通过 JPA 加载的实体 A,并且有一个 B 实体的集合。那些 B 实体有一个必填字段。
当用户通过在 webapp 中按下链接将新的 B 添加到 A 时,不会设置该必填字段(因为没有合理的默认值)。
在下一个 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 实现在这里的行为是否相同?
提前致谢。
【问题讨论】:
标签: java hibernate web-applications jpa