提问者:小点点

雪花返回导致问题的大写字段结果集jpql映射jpa/hibernate


我有一个项目要使用 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> {
}

我希望能有某种房产作为解决方案,但任何建议都是受欢迎的。


共1个答案

匿名用户

请看:如何通过Hibernate在生成的sql中为别名添加引号?

只需添加