我是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文档供参考。
没关系,但你有两个选择:
@Query("SELECT ti.testName FROM UserTestInstance ti")
中我为此目的使用了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();
}