我将xml中的记录插入到包含许多外键的表中。从XML数据可能存在尚不存在的外来关系,因此我需要在插入主实体之前插入它。
实施例
<person>
<name>p1</name>
<school>XYZ School</school>
<person>
我的JDBCBatchItemWriter sql将是:
INSERT INTO PERSON (NAME, SCHOOL_ID) VALUES (:name, (SELECT ID FROM SCHOOLS WHERE SCHOOL_NAME = :school));
在插入主要实体之前,是否需要单独的作业步骤来插入每个关系?我已经查找了关系数据的示例,我发现的所有内容似乎都是外键已经存在的简单情况。
解决方案: 结束了创建HashMap的步骤&gt;我需要做的所有异物。然后将其注入下一步,如果对象尚不存在则执行插入操作。可能需要比使用内存HashMap更好的解决方案,但似乎现在可以使用。
答案 0 :(得分:0)
有几种不同的方法可以解决这个问题。问题实际上是关于他们如何加载。你需要检查一下它们是否存在吗?如果不必要地执行此检查可能会对性能产生重大影响。实现这一目标的最高效方法是通过一个单独的步骤,假设您可以在之前的步骤中盲目地插入它们。