当前位置: 首页 > 面试题库 >

CrudRepository中的自定义SQL查询

都建树
2023-03-14
问题内容

我试图在扩展CrudRepository的存储库中执行一些SQL查询。我在控制器中有以下代码:

@CrossOrigin(origins = "*")
    @GetMapping(path="/all")
    public @ResponseBody List<UserProjection> getAllRequestResponseRecords() {
        return userRequestResponseRepository.findAllProjectedBy() ;
    }

DAO代码如下:

public interface UserRequestResponseRepository extends CrudRepository<UserRequestResponse, Integer> {
    //public static final String FIND_QUERY = "select user.u_httpstatus ,user.u_queryparam from UserRequestResponse user";
    public static final String FIND_QUERY = 
    "select new com.abc.datacollection.entity.UserRequestResponse(user.u_httpstatus ,user.u_queryparam) from UserRequestResponse user";
    @Query(value = FIND_QUERY)
    //public List<UserProjection> getAllRequestResponseRecords();
     List<UserProjection> findAllProjectedBy();

}

该类是:

import java.sql.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity // This tells Hibernate to make a table out of this class
public class UserRequestResponse {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private String u_httpstatus;

    private String u_error_message;

    private String u_queryparam;

    public UserRequestResponse(String u_httpstatus, String u_queryparam) {
        this.u_httpstatus = u_httpstatus;
        this.u_queryparam = u_queryparam;
    }


    public String getU_httpstatus() {
        return u_httpstatus;
    }

    public void setU_httpstatus(String u_httpstatus) {
        this.u_httpstatus = u_httpstatus;
    }

    public String getU_error_message() {
        return u_error_message;
    }

    public void setU_error_message(String u_error_message) {
        this.u_error_message = u_error_message;
    }

    public String getU_queryparam() {
        return u_queryparam;
    }

    public void setU_queryparam(String u_queryparam) {
        this.u_queryparam = u_queryparam;
    }


}

投影为:

public interface UserProjection {
    String getU_httpstatus();
    String getU_queryparam();

}

我对如何添加查询(诸如此类)感到困惑:

select u_type,count(u_type) from u_user_click_data group by u_type

我如何更改投影,还有哪些其他必要的更改?


问题答案:

您可以将DAO更改为下面,这应该可以工作。

public interface UserRequestResponseRepository extends CrudRepository<UserRequestResponse, Integer> {
public static final String FIND_QUERY = 
"select new com.abc.datacollection.entity.UserRequestResponse(user.u_httpstatus ,user.u_queryparam, COUNT(user.u_type)) from UserRequestResponse user GROUP BY user.u_type";
@Query(value = FIND_QUERY)
//public List<UserProjection> getAllRequestResponseRecords();
 List<UserProjection> findAllProjectedBy();

}

确保Bean类构造函数应具有传递的参数。

验证查询是否为有效的JPA查询(此处)。



 类似资料:
  • 1. 简介 分析云作为企业进行全域用户行为数据分析的数据中台,需要满足企业不同业务角色的各类差异化分析需求。 其中,对于企业深度结合业务模式的定制化需求,分析云平台提供了“自定义SQL查询”的功能,支持业务人员自行编辑复杂的 SQL 查询语言,实现对平台数据仓库中最底层的细粒度用户行为数据进行分析操作,以获取当前分析云平台既有数据模型无法覆盖的个性化分析需求的结果。 2. 使用说明 当前 sql

  • 1. 简介 分析云作为企业进行全域用户行为数据分析的数据中台,需要满足企业不同业务角色的各类差异化分析需求。 其中,对于企业深度结合业务模式的定制化需求,分析云平台提供了“自定义SQL查询”的功能,支持业务人员自行编辑复杂的 SQL 查询语言,实现对平台数据仓库中最底层的细粒度用户行为数据进行分析操作,以获取当前分析云平台既有数据模型无法覆盖的个性化分析需求的结果。 2. 使用说明 当前 sql

  • 我读到了Crudrepository,这是一个接口,用于在特定类型的存储库上进行通用CRUD操作。 但是我们可以创建我们的自定义接口并扩展CrudRepository。

  • Nutz.Dao 提供了大多数简单的操作,在80%以上的情况下,你并不需要编写 SQL,因为 Nutz.Dao 会自动替你 生成可以使用的 SQL。但是,在某些特殊的情况下,尤其是考虑到效率等问题,直接写作 SQL 仍然是程序员们 的一个杀手锏,有了这个杀手锏,程序员们永远可以针对任何数据库做他们想要的任何操作。 在之前的时代,很多程序员将 SQL 代码同 Java 代码混杂在一起,即所谓的硬编码

  • 问题内容: 我有这样的自定义订购需求: 我曾经想过用3个不同的选择查询的帮助下结合和。但是,我不能这样做,因为必须 在 和 之前 使用。 如何进行选择(或多个选择)以实现上面的自定义排序? 另一个解决方法可能会有所帮助,就是使此选择查询中返回的 第一条记录 成为最后一条记录,但是如何? 问题答案: 试试这个: 1亿个常量必须大于N。 这是一个简单的演示

  • 我有这张桌子: 我需要创建一个customorderID列,其显示如下: 行按ID排序 有人能帮我吗?