Spring Data JPA 本机查询不遵循投影的命名约定

Nik*_*iou 5 java spring spring-data-jpa

我正在对 PostgreSQL 数据库使用 Spring Boot 2.1.3.RELEASE、Spring Data JPA。

列名使用下划线(如created_by)和实体bean普通Java驼峰createdBygetCreatedBy()等等。

我正在尝试使用投影界面编写本机查询,但我得到了null值。例子:

public class MyEntity {
    private String createdBy;
    // getters and setters etc
    // more fields here
}

public interface MyProjection {
    String getCreatedBy();
}

public interface MyRepository extends JpaRepository<MyEntity, Long> {
    @Query(value = "
       SELECT DISTINCT cool_table.* FROM cool_table INNER JOIN
       // more SQL things", nativeQuery = true
    )
    List<MyProjection> searchNative(String filter);
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我为下划线分隔的列返回空值(它适用于非本地查询)。

作为一项实验,我在我的投影中添加了一个名为的方法,getCreated_by() 并且该方法运行良好......

我不想将投影中的所有方法重命名为名称中包含下划线,因为这看起来很丑。有没有办法让本机查询与投影一起工作?

小智 -1

只需使用注释@Column并像在数据库中一样物理设置列名称。另一个选项是将架构设置为自动创建,并查看自动创建的架构。