Spring JPA findAll在更改Spring.datasource.url后返回空,即使使用SELECT*的本



我已经配置了我的实体、存储库等,并针对我的本地DB进行了测试。它按预期工作,

然而,在将我的数据源更改为Amazon RDS中的生产数据库(这是一个MySQL数据库(后,我的JPA findAll返回一个空数组,findById即使在数据库中也找不到ID。

我使用一个执行SELECT*的本机查询进行了测试,它返回了预期的结果。

所以问题是:当使用这个新的数据源时,是什么导致像findAll这样的JPA语法出现问题?

package com.example.scoopbe.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "CATEGORY")
public class Category {
@Id
@Column(name = "id")
private String id;
@Column(name = "name")
private String name;
public String getId() {
return id;
}
public Category setId(String id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public Category setName(String name) {
this.name = name;
return this;
}
}
package com.example.scoopbe.repository;
import com.example.scoopbe.model.Category;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CategoryRepository extends JpaRepository<Category, String> {
}
server.port=5000
spring.jpa.hibernate.ddl-auto = update
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.jpa.show-sql = true

同样,简单地更改DB_URL、DB_USER和DB_PASSWORD会导致此问题。恢复这些值可以解决问题。

问题是,即使表和实体被命名为"CATEGORY";,JPA使用小写的表名,由于它还不存在,它创建了一个名为"的新表名;类别";。

这个新表是空的,所以这就是为什么我的查询返回空的原因。本机查询正在命中正确的表";CATEGORY";

最新更新