Spring JPA:从没有where子句的表中查询一列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring JPA:从没有where子句的表中查询一列相关的知识,希望对你有一定的参考价值。

我是JPA和Spring Boot的新手,并尝试编写一个自定义查询,当触发API时,该查询只返回表中的一列。但是我这样做会出错。如果有人可以引导我以正确的方式编写此自定义查询,将会很有帮助。

// Controller class
@Autowired
private UserTestInstanceDao usertestdao;

List<String> usertestinst = usertestdao.tempQuery();

// DAO class

public interface UserTestInstanceDao extends CrudRepository<UserTestInstance, Long> {

@Query("SELECT ti.test_name FROM test_instance ti")
public List<String> tempQuery();

}
答案

我认为您的查询应该如下所示(如果您遵循约定):

@Query("SELECT ti.testName FROM UserTestInstance ti")

对于此查询,UserTestInstance应如下所示:

public class UserTestInstance {
    private String testName;

    <getters and setters>
}

这是因为您正在使用JPQL,您应该查询对象及其声明的变量。将Spring的数据作业转换为特定于数据库的数据库查询。

Spring Data文档供参考。

另一答案

没关系,但你有两个选择:

  1. 您必须将您的名称类放在from子句@Query("SELECT ti.testName FROM UserTestInstance ti")
  2. 使用真实名称为Database qazxsw poi的本机查询
另一答案

我为此目的使用了JpaRepository。

控制器类

@Query(value="SELECT ti.test_name FROM test_instance ti",nativeQuery=true)

DAO类:

@Autowired
private UserTestInstanceDao usertestdao;

//in method
List<String> usertestinst = usertestdao.tempQuery();

这些都在我的application.properties中:

public interface UserTestInstanceDao extends JpaRepository<UserTestInstance, Long> {

    @Query(value="SELECT test_name FROM ti", nativeQuery = true)

    public List<String> tempQuery();

}

以上是关于Spring JPA:从没有where子句的表中查询一列的主要内容,如果未能解决你的问题,请参考以下文章

具有动态 where 子句的 Spring 数据 JPA

带有'like'和'or'的Spring JPA @Query where子句

Spring JPA Hibernate JPQL 查找在 where 子句中传递的项目的索引

跳出查询以在存储过程中从单独的表中获取 where 子句

如何使用 Hibernate 为 Spring data JPA 的所有查找方法添加全局 where 子句?

JPA,Hibernate和Spring Data:在MS SQL服务器上的where子句中将字符串转换为数字