我面临着文档扩展属性的问题(尝试扩展文档表)。我在扩展表中创建了原始表的PK(FDOC_NBR),并通过自定义原始表的ojb条目的foreignKey(作为“扩展”引用描述符)链接了两者。我为扩展创建了bo和dd,并自定义了原始文档的dd以添加新属性。在扩展BO本身上,我还为documentNumber的PK列添加了2个新列+的成员(带有setter和getter)。我还将新属性添加到了documet的jsp中。相关的模块定义已经扩展到包括自定义dd,ojb等文件。
实际上,在打开文档时会显示新字段 - 但是,在尝试提交文档时(无论对新字段做什么)我都会收到错误 -
错误详情:OJB操作; SQL []; ORA-01400:无法插入NULL 进入(" KFSTEM"。" TEM_TRVL_ARRANGER_DOC_EXT_T"。" FDOC_NBR");嵌套 异常是java.sql.SQLIntegrityConstraintViolationException: ORA-01400:无法插入NULL (" KFSTEM"" TEM_TRVL_ARRANGER_DOC_EXT_T"" FDOC_NBR&#34)
似乎某种程度上系统试图在扩展名的PK字段中插入NULL值,而不是实际的文档编号。尝试调试这个,在action的路由方法中,一直到DocumentDaoOjb.save(这是我可以去的那么远)我看到带有真实doc号的文件被传递,所以问题似乎纯粹使用ojb尝试将此数字设置为扩展表。
有没有人对文档的扩展属性有任何经验可以帮助解释一下?
答案 0 :(得分:5)
KFS正在使用KNS,而在Kuali神经系统中,扩展属性对象的主键必须通过手动干预来设置。
在这种情况下,看起来好像您正在为交易文档添加扩展属性,Travel Arranger文档(TAA),这简化了事情。基本上,您需要扩展org.kuali.kfs.module.tem.document.TravelArrangerDocument并覆盖prepareForSave以在那里设置文档编号(它可能已经设置,因为在路由过程中应该多次调用prepareForSave,但覆盖该信息并没有真正的伤害,因为基本文件的编号将保持不变。)
希望这有帮助!