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

时间:2019-03-21 13:58:00

标签: java spring spring-data-jpa

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

列名使用下划线(例如created_by)和实体bean正常的Java camelCase 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);
}

运行此命令时,对于下划线分隔的列(其中 与非本地查询配合使用很好。

作为一个实验,我在投影中添加了一个名为getCreated_by()的方法 那个很好用...

我不想重命名投影中的所有方法以在其下划线 他们的名字,因为看起来很难看。有没有办法获取本地查询 与投影一起工作?

1 个答案:

答案 0 :(得分:0)

只需使用注释@Column并按照数据库中的物理设置列名。另一种选择是将架构设置为自动创建,并查看自动创建的架构。