我在java中使用spring批处理。
我的postgres db中有两个表table1和table2。 第一张表有一列“盖子”,第二张表有盖子和出价栏。
我的春季配置如下:
<property name="selectClause">
<value> <![CDATA[
SELECT f.lid, r.bid
]]>
</value>
</property>
<property name="fromClause">
<value> <![CDATA[
FROM table1 f left outer join (select distinct bid, lid from table2) AS r ON f.lid=r.lid
]]>
</value>
</property>
<property name="whereClause">
<value><![CDATA[
WHERE f.lid >= :start and f.lid <= :end
]]>
</value>
</property>
<property name="sortKey" value="lid" />
以上设置在运行批处理作业时抛出异常。
下面是我尝试不同设置时遇到的例外列表。1)当我运行作业时(根据上面的设置),我得到以下错误: “org.postgresql.util.PSQLException:错误:列”lid“引用含糊不清”
2)我尝试通过在selectClause中添加“,f.lid lidtemp”来解决这个问题,然后将sortKey更改为lidtemp然后我看到下面的错误: “嵌套异常是org.postgresql.util.PSQLException:错误:列”lidtemp“不存在”
3)当我将sortKey更改为f.lid时,它抱怨:“结果集中不存在列f.lid”
下面是运行作业时生成的查询,导致上面的问题#1: SELECT f.lid,r.bid FROM table1 f 左外连接(选择不同的出价,来自table2的盖子)AS r ON f.lid = r.lid WHERE f.lid&gt; = 54734和f.lid&lt; = 54734 ORDER BY lid ASC LIMIT 1000
当我在pgAdmin中运行查询时,它运行得非常好。
我尝试了几个技巧,最后归结为春季批次在where子句中添加额外条件的问题:“AND((lid&gt;?))”
我已经对f.lid有条件了。 是什么原因加入它以及如何摆脱它?