Spring JPA/Hibernate findby 列名返回空集合

Posted

技术标签:

【中文标题】Spring JPA/Hibernate findby 列名返回空集合【英文标题】:Spring JPA/Hibernate findby column name return empty collection 【发布时间】:2017-05-08 21:07:24 【问题描述】:

我有一个包含 2 列 store_number 和 manager_id 的表,我为此表创建了一个实体和一个存储库类。

我正在尝试使用下面的存储库方法通过 store_number 查询 manager_id

豆类:

@Entity
public class StoreManagers 
    @Id
    @GeneratedValue
    @Column(name="store_number")
    private String storeNumber;
    private String managerId;   
    public StoreManagers() 
    
    public String getStoreNumber() 
        return storeNumber;
    
    public void setStoreNumber(String storeNumber) 
        this.storeNumber = storeNumber;
    
    public String getManagerId() 
        return managerId;
    
    public void setManagerId(String managerId) 
        this.managerId = managerId;
    
    @Override
    public String toString() 
        return "StoreManagers [storeNumber=" + storeNumber + ", manageId=" + managerId + "]";
    





public interface StoreManagersRepository extends JpaRepository<StoreManagers, String>  
        List<StoreManagers> findByStoreNumber(String storeNumber); 

这里是休眠查询和结果

Hibernate: select storemanag0_.manager_discount_id as manager_1_2_,    storemanag0_.store_number as store_nu2_2_ from storemanagers    storemanag0_ where storemanag0_.store_number=?    2016-12-23 12:16:15.763 TRACE 644 --- [nio-4000-exec-1] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as    [VARCHAR] - [00012]

   : []

它返回一个空列表,但是当我直接执行上述查询时,我得到了结果。

请帮我解决这个问题。我在这里做错了吗?

【问题讨论】:

要么你没有传递相同的 storeNumber,要么你和应用程序没有使用同一个数据库,要么你看到的数据已经插入但尚未提交。 请在您遇到问题的地方添加一段代码。 请不要覆盖我所做的编辑,如果它使帖子看起来更糟。 我使用的是相同的 database 和 storeNumber,而且我只是从 DB 中读取现有数据。 尝试直接运行commit 命令并重新启动您的应用程序并检查结果。设置参数后尝试打印查询。 【参考方案1】:

如果您希望在数据库中保留带下划线的字段名称,请使用 @Column(name="store_number") 注释您的实体字段并将您的字段重命名为驼峰式。

@Column(name="store_number")
private int storeNumber;

在你的仓库中,你可以使用方法

findByStoreNumber(int storeNumber)

【讨论】:

使用相同..请看问题部分的实体类代码 默认他可以在数据库中使用下划线,驼峰式的会被分割成下划线。 ***.com/a/29088398/3448799 尝试将您的storeNumber 更改为intlong,或者如果您的storeNumber 是字母数字,请提供另一个字段,即id 并由@GeneratedValue 注释跨度>

以上是关于Spring JPA/Hibernate findby 列名返回空集合的主要内容,如果未能解决你的问题,请参考以下文章

JPA---Spring-data-JPA---Hibernate

JPA---Spring-data-JPA---Hibernate

Spring+Jersey+JPA+Hibernate+MySQL实现CRUD操作案例

Spring,JPA,Hibernate,Atomikos - 奇怪的启动错误

Spring Boot ManyToMany - *** - JPA,Hibernate

Spring Boot / JPA / Hibernate,如何根据 Spring 配置文件切换数据库供应商?