我正在尝试弄清楚如何使用groovy编辑现有映射。
我能够创建新的映射。我试图删除代码的删除部分,但这会给我一个错误,我需要删除退出的映射
//delete old mapping
/* remove delete portion to use edit existing mapping
removeMapping(folder, mappingName)
txnDef = new DefaultTransactionDefinition()
tm = odiInstance.getTransactionManager()
tme = odiInstance.getTransactionalEntityManager()
txnStatus = tm.getTransaction(txnDef)
dsf = (IOdiDataStoreFinder)tme.getFinder(OdiDataStore.class)
mapf = (IMappingFinder) tme.getFinder(Mapping.class)
*/
//create new mapping
map = new Mapping(mappingName, folder);
tme.persist(map)
从该错误看来,必须删除映射(Load_TRG_CUSTOMER)。 如果需要更多代码,请告诉我。
错误:
ODI-16096: A mapping with name Load_TRG_CUSTOMER already exists in folder TEST_FOLDER.
(Subtract 18 from the error line number to account for the standard imports)
oracle.odi.domain.mapping.exception.MappingException: ODI-16096: A mapping with name Load_TRG_CUSTOMER already exists in folder TEST_FOLDER.
at oracle.odi.domain.mapping.Mapping.checkName(Mapping.java:153)
谢谢大家的帮助。
答案 0 :(得分:0)
IMappingFinder提供了查找现有映射的有用方法。您已经知道名称和文件夹了,我想findByName方法最适合您。
我看到您已经实例化了IMappingFinder(尽管目前对此已发表评论)。因此,您只需要替换:
map = new Mapping(mappingName, folder);
作者
map = (Mapping) mapf.findByName(folder, mappingName);