我正在对 PostgreSQL 数据库使用 Spring Boot 2.1.3.RELEASE、Spring Data JPA。
列名使用下划线(例如 created_by
)和实体 bean 使用普通 Java camelCase createdBy
, getCreatedBy()
等等。
我正在尝试使用投影界面编写 native 查询,但我回来了 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()
的方法。那一个工作正常......
我不想将投影中的所有方法重命名为带有下划线
他们的名字,因为那看起来很丑。有没有办法获得 native 查询
与预测一起工作?
最佳答案
只需使用注释 @Column
并将列名物理设置为在数据库中。另一种选择是将您的架构设置为自动创建并查看自动创建的架构。
关于java - Spring Data JPA native 查询不遵循投影的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55282106/