hibernate - 如何通过 Hibernate 在生成的 sql 中为别名添加引号?
问题描述
由于我使用的数据库(雪花),我必须引用休眠生成的别名。
Hibernate 生成如下示例
select emp0_.emp_id as emp_id1_0_0_, emp0_.name as name_2_0_0_ from test.employee emp0_ where emp0_.emp_id=?
但我想将别名/标识符引用为
select emp0_.emp_id as "emp_id1_0_0_", emp0_.name as "name_2_0_0_" from test.employee emp0_ where emp0_.emp_id=?
解决方案
这不是您关于引用别名的实际问题的答案,但它可能是 JPA+Snowflake 套管问题的解决方案,因为我们遇到了相同的问题并寻找相同的解决方案。
如果您使用的是Snowflake JDBC库,则添加&CLIENT_RESULT_COLUMN_CASE_INSENSITIVE=true
到 Snowflake 连接字符串的末尾将允许该库与 JPA/Hibernate 一起运行。确保您使用的是最新的 Snowflake JDBC,因为早期版本中的一些错误导致连接字符串在运行时从jdbc:snowflake://
更改为 。https://
设置该连接属性将导致此 columnName.toUpperCase()
代码触发并且该getColumnIndex()
方法现在可以工作。
您的问题范围之外的其他信息:当我们将 spring application.properties 设置如下时,我们能够使用 PagingAndSortingRepository 而无需我们自己的 DataSource 或任何其他配置类。
spring.jpa.properties.hibernate.dialect=[empty class extending org.hibernate.dialect.Dialect]
spring.datasource.driverClassName=net.snowflake.client.jdbc.SnowflakeDriver
spring.datasource.username=${snowflake.user}
spring.datasource.password=${snowflake.password}
spring.datasource.url=jdbc:snowflake://${snowflake.account}.snowflakecomputing.com/?warehouse=${snowflake.warehouse}&db=${snowflake.databaseName}&schema=${snowflake.schema}&CLIENT_RESULT_COLUMN_CASE_INSENSITIVE=true
推荐阅读
- javascript - YouTube 视频 API 片段标题包含 Next.js 中的特殊字符
- java - 如何在 JOOQ 中公开新的 SQL 函数
- jenkins - 将 allure jenkins 插件与 jenkins.groovy 集成
- maven - 确保在没有项目父 pom 的所有其他模块之前构建 maven 模块
- python - 将字符串添加到两列数据框中的重复字符串
- php - mysql查询的对称差或析取联合
- java - Java - ClassNotFoundException: java.net.http.HttpClient
- python - 一些两个字母的序列重复了 3 次?“知足”和“维持”就是这样的词
- java - 正则表达式验证包含 '=' 和 '~' 作为结束字符的字符串
- c# - Xamarin.Forms Picker ItemsSource 在 XAML 中保持为空