小编典典

JavaSpring JPA选择特定列

java

我正在使用Spring JPA执行所有数据库操作。但是我不知道如何从Spring JPA的表中选择特定的列?

例如:
SELECT projectId, projectName FROM projects


阅读 739

收藏
2020-03-09

共3个答案

小编典典

你可以从这样的类nativeQuery = true中在@Query注释中进行设置Repository

public static final String FIND_PROJECTS = "SELECT projectId, projectName FROM projects";

@Query(value = FIND_PROJECTS, nativeQuery = true)
public List<Object[]> findProjects();

请注意,你将不得不自己进行映射。像这样使用常规映射查找可能会更容易,除非你确实只需要这两个值:

public List<Project> findAll()

也许也值得看一下Spring数据文档。

2020-03-09
小编典典

我不特别喜欢这种语法(看起来有点hacky …),但这是我能够找到的最优雅的解决方案(它在JPA储存库类中使用了自定义JPQL查询):

@Query("select new com.foo.bar.entity.Document(d.docId, d.filename) from Document d where d.filterCol = ?1")
List<Document> findDocumentsForListing(String filterValue);

然后,当然,你只需要提供一个Document接受docId&filename作为构造函数args的构造函数即可。

2020-03-09
小编典典

你可以使用Spring Data JPA (doc)中的投影。在你的情况下,请创建接口:

interface ProjectIdAndName{
    String getId();
    String getName();
}

并将以下方法添加到你的存储库

List<ProjectIdAndName> findAll();
2020-03-09