我正在使用Spring JPA执行所有数据库操作。但是我不知道如何从Spring JPA的表中选择特定的列?
例如: SELECT projectId, projectName FROM projects
SELECT projectId, projectName FROM projects
你可以从这样的类nativeQuery = true中在@Query注释中进行设置Repository:
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数据文档。
我不特别喜欢这种语法(看起来有点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的构造函数即可。
Document
docId&filename
args
你可以使用Spring Data JPA (doc)中的投影。在你的情况下,请创建接口:
interface ProjectIdAndName{ String getId(); String getName(); }
并将以下方法添加到你的存储库
List<ProjectIdAndName> findAll();