无法使用 JPA 从我的 springboot 应用程序连接 redshift

时间:2021-01-04 13:41:14

标签: spring-boot jpa spring-data-jpa amazon-redshift

我正在开发 Springboot 应用程序,需要使用 spring-boot-starter-data-jpa 将数据存储到 redshift。

但是我无法实现 redshift 和我的 springboot 应用程序之间的连接。

这是我对 pom.xml 的依赖:

lets=input()

guess=input()

i = 0

for x in guess:
    if x == lets[i]: 
          i += 1
          if i >= len(lets): break

if (i == len(lets)):
    print("Yes")
else:
    print("No")

我的应用程序属性

 <dependency>
            <groupId>com.amazon.redshift</groupId>
            <artifactId>redshift-jdbc42</artifactId>
            <version>1.2.43.1067</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.3.7.RELEASE</version>
        </dependency>

我的 Java 模型类:

spring.datasource.url=jdbc:redshift://hostaddress
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.amazon.redshift.jdbc.Driver

spring.jpa.hibernate.ddl-auto = create

异常堆栈跟踪:

@Entity
@Table(schema = "public", name = "SampleModel")
public class SampleModel {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;


    private int year;

    private int month;

    private BigDecimal price;

    private BigDecimal total;
}

有没有人遇到过这个问题或知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的连接没有问题 - 您已成功连接。但是您的应用程序正在尝试从 information_schema.sequences 表中读取数据,该表在 Redshift 中不存在。

看起来您的 JPA 对象的标识符绑定到序列,并且您使用的是 PostgreSQL 方言。您的应用将尝试通过读取/创建序列来初始化对象,但 Redshift 不支持序列

我不确定您要实现的目标,但我认为在 Redshift DB 上进行 ORM 映射不是一个好主意(可能这就是 Redshift 没有 Hibernate 方言的原因)。