弹出批处理作业抛出“列引用不明确”

时间:2013-12-18 06:09:07

标签: java sql spring postgresql spring-batch

我在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有条件了。 是什么原因加入它以及如何摆脱它?

0 个答案:

没有答案