gpt4 book ai didi

spring-batch - 使用 JdbcPagingItemReader 导致连接语句导致 MySQLIntegrityConstraintViolationException

转载 作者:行者123 更新时间:2023-12-04 05:09:05 26 4
gpt4 key购买 nike

我正在运行 Spring Batch 并使用 JdbcPagingItemReader .使用示例配置:

<bean id="dogQueryProvider"		class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean">
<property name="databaseType" value="mysql" />
<property name="dataSource" ref="dataSource" />
<property name="selectClause"
value="SELECT owner.id as ownerid, first_name, last_name, dog_name " />
<property name="fromClause"
value="FROM dog_owner owner INNER JOIN dog ON owner.id = dog.id " />
<property name="sortKey" value="owner.id" />
</bean>


我收到与以下相关的错误:

Column 'id' in order clause is ambiguous; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id' in order clause is ambiguous.



把它拿走 dog_ownerdog表有 id列。我认为这与 AbstractSqlPagingQueryProvider.getSortKeysWithoutAliases有关,我认为这是剥离的 owner来自 owner.id指定为 sortKey .有什么建议可以解决这个问题吗?

最佳答案

显然,这似乎仍在以某种形式发生,但有一种方法可以制作您的查询,这样别名就不会被删除。您可以通过选择不同名称来重命名连接的列。

你的 selectClause 变成

SELECT owner.id, owner.first_name, owner.last_name, dog.dog_name

FromClause 变成
      FROM dog_owner owner
INNER JOIN (SELECT d2.id AS dogId, d2.dog_name
FROM dog d2) AS dog
ON owner.id = dog.dogId

现在您应该可以使用“id”作为 sortKey,因为只有一列名为“id”。即使您将 dog.dogId 添加到 selectClause 中,这也有效。

关于spring-batch - 使用 JdbcPagingItemReader 导致连接语句导致 MySQLIntegrityConstraintViolationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28989996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com