我有一个项目要使用 ORM (如 JPA/Hibernate)与雪花数据库集成,但对于雪花的结果集,总是返回大写字段,这与 JPQL 默认值冲突。
下面的示例是一个使用JPQL的选择查询,因为您可以看到所有字段都是小写的
select podioitem0_.ID as id1_0_0_, podioitem0_.JSON as json2_0_0_ from INLIFE_MARK.PUBLIC.podio_item podioitem0_ where podioitem0_.ID=?
雪花的结果集返回大写列
给定上面的样本,我得到了这个错误
o.h.engine.jdbc.spi.SqlExceptionHelper : Column not found: json2_0_0_
这是因为当尝试从resultset映射< code>json2_0_0_列时,映射器找不到它,因为resultset中的列是大写的。
那么,问题是,有没有一种方法可以告诉JPQL或jpa/hibernate在Uppercase中生成JPQL查询?至少是列名,所以我希望它看起来是这样的?
select podioitem0_.ID as ID1_0_0_, podioitem0_.JSON as JSON2_0_0_ from INLIFE_MARK.PUBLIC.podio_item podioitem0_ where podioitem0_.ID=?
下面的其他详细信息
财产
spring.jpa.show-sql=true
spring.jpa.database=SQL_SERVER
spring.jpa.hibernate.ddl-auto=none
spring.jpa.hibernate.naming.implicit-
strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl
spring.jpa.hibernate.naming.physical-
strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
示例实体类
@ToString
@Entity
@Table(schema = "PUBLIC", catalog = "INLIFE_MARK", name = "podio_item")
public class PodioItem {
@Id
@Column(name = "id")
public Long id;
@Column(name = "json", columnDefinition="varbinary")
public byte[] json;
}
我使用CrudRepository来保存和查找对象
@Repository
public interface PodioItemRepository extends
CrudRepository<PodioItem, Long> {
}
我希望能有某种房产作为解决方案,但任何建议都是受欢迎的。
请看:如何通过Hibernate在生成的sql中为别名添加引号?
只需添加