"java.sql.SQLSyntaxErrorException: Unknown column '*' in 'on clause'" 在休眠条件下加入 table
"java.sql.SQLSyntaxErrorException: Unknown column '*' in 'on clause'" while joining table with conditions in hibernate
我在 "java.sql.SQLSyntaxErrorException: Unknown column '*' in 'on clause'" 休眠时遇到问题。
因为 jpql 不支持自连接,我正在尝试使用其他非常丑陋但可行的解决方案,其中包含很多 "left join on"。
我经常遇到此异常,而该列确实存在。一些随机替换行(每行一个连接)可能会有所帮助,或者在另一个连接中设置一个连接的条件也会有所帮助。但是我不明白为什么会这样!
当我只更改联接顺序或将 "on" 条件设置为另一个联接或 "where clause" 时,为什么使用同一个查询 hibernate 可以看到或看不到某些列?
谢谢。
所以,事情是这样的。我有一个复杂的数据库,构建复杂的查询几乎总是以 "Unknown column '*' in 'on clause'" 结束。
原因在于我的数据库本身的结构和 MySQL 查询优化器。
MySQL 我想任何数据库都在尝试优化您的查询和连接顺序,以尽可能少地工作,通常基于每个 table 中的条目数量。
其中一个 table 只与彼此有关系 table。由于它是仅与一个 table 的 1-1 关系,优化器几乎总是在完成所有其他工作后最后加入它。但它不能那样做,因为它必须使用来自 table 的数据,这些数据将在最后连接。所以我不得不重构我的数据库并从 2 生成 1 table,因为 2 table 真的没有任何意义(我在开始时这样做是为了让 DB 尽可能面向未来)。
希望对您有所帮助。有不明白的地方欢迎追问
我在 "java.sql.SQLSyntaxErrorException: Unknown column '*' in 'on clause'" 休眠时遇到问题。
因为 jpql 不支持自连接,我正在尝试使用其他非常丑陋但可行的解决方案,其中包含很多 "left join on"。 我经常遇到此异常,而该列确实存在。一些随机替换行(每行一个连接)可能会有所帮助,或者在另一个连接中设置一个连接的条件也会有所帮助。但是我不明白为什么会这样!
当我只更改联接顺序或将 "on" 条件设置为另一个联接或 "where clause" 时,为什么使用同一个查询 hibernate 可以看到或看不到某些列? 谢谢。
所以,事情是这样的。我有一个复杂的数据库,构建复杂的查询几乎总是以 "Unknown column '*' in 'on clause'" 结束。
原因在于我的数据库本身的结构和 MySQL 查询优化器。
MySQL 我想任何数据库都在尝试优化您的查询和连接顺序,以尽可能少地工作,通常基于每个 table 中的条目数量。
其中一个 table 只与彼此有关系 table。由于它是仅与一个 table 的 1-1 关系,优化器几乎总是在完成所有其他工作后最后加入它。但它不能那样做,因为它必须使用来自 table 的数据,这些数据将在最后连接。所以我不得不重构我的数据库并从 2 生成 1 table,因为 2 table 真的没有任何意义(我在开始时这样做是为了让 DB 尽可能面向未来)。
希望对您有所帮助。有不明白的地方欢迎追问