8

我面临文档扩展属性的问题(尝试扩展文档表)。我在扩展表中创建了原始表的 PK (FDOC_NBR),并通过自定义原始表的 ojb 条目的外键将两者链接起来(作为“扩展”引用描述符)。我为扩展创建了 bo 和 dd 并自定义了原始文档的 dd 以添加新属性。在扩展的 BO 本身上,我还为 2 个新列 + 为 documentNumber 的 PK 列添加了成员​​(带有 setter 和 getter)。我还在文档的 jsp 中添加了新属性。相关模块定义已扩展为包括自定义 dd、ojb 等文件。

实际上,在打开文档时会显示新字段 - 但是,当尝试提交文档时(无论对新字段做任何事情)我都会收到错误 -

错误详情:OJB 操作;SQL []; ORA-01400: 无法将 NULL 插入 ("KFSTEM"."TEM_TRVL_ARRANGER_DOC_EXT_T"."FDOC_NBR") ;嵌套异常是 java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL into ("KFSTEM"."TEM_TRVL_ARRANGER_DOC_EXT_T"."FDOC_NBR")

似乎系统以某种方式尝试将 NULL 值插入扩展的 PK 字段,而不是实际的文档编号。尝试对此进行调试,在操作的路由方法中一直到 DocumentDaoOjb.save (尽我所能)我看到带有真实文档编号的文档被传递,所以问题似乎纯粹是ojb 试图将此号码设置为扩展表。

是否有人对文档的扩展属性有任何经验,可以帮助阐明这一点?

4

1 回答 1

5

KFS使用的是KNS,而在酷力神经系统中,扩展属性对象上的主键必须通过人工干预来设置。

在这种情况下,看起来好像您正在向事务性文档(Travel Arranger 文档 (TAA))添加扩展属性,从而简化事情。基本上,您需要扩展 org.kuali.kfs.module.tem.document.TravelArrangerDocument 并覆盖 prepareForSave 以在此处设置文档编号(它可能已经设置,因为在路由过程中应该多次调用 prepareForSave,但是有覆盖该信息并没有真正的危害,因为基本文档的编号将保持不变)。

希望这可以帮助!

于 2014-08-14T15:53:36.930 回答