当前位置: 首页 > 知识库问答 >
问题:

如何获得结果从JPA自定义@查询在Spring启动到DTO

刘成礼
2023-03-14

我想在不使用元组的情况下,从这个查询中得到DTO的结果。

@Repository公共界面CustomMapRepository扩展了JpaRepository{

@Query(
    nativeQuery = true,
    value = "select  i.id as  permissionId, p.id as projectId,p.name as projectName,i.user_id as userId,\n" +
        "case " +
        "when  i.scopes is not null then i.scopes\n" +
        "when i.scopes is null   then \"[{'edit':false},{'create':false},{'update':flase},{'delete':false},{'view':false}]\" end as scopes \n" +
        "from   internal_permission i  \n" +
        "right join project p\n" +
        "on i.project_id=p.id\n" +
        "where \n" +
        "(user_id=:userId or user_id is null )and \n" +
        "p.space_id=:spaceId )")
List<CustomMapDTO> findBySpaceIdAndUserId(@Param("spaceId") Long spaceId, @Param("userId") String userId);

}


the DTO Class 

公共类CustomMapDTO实现可序列化{

private  String permissionId;
private  Long projectId;
private  String projectName;
private  String userId;
private  String  scopes;

//..接受者和接受者}



共有1个答案

萧安怡
2023-03-14
  List<CustomMapDTO> res= ((Session)this.em.getDelegate()).createSQLQuery(
        "\n select p.id as projectId,p.name as projectName, i.id as permissionId,i.user_id as userId,\n" +
            "case\n" +
            "  when  i.scopes is not null then i.scopes\n" +
            "  when i.scopes  is null   then \"[{'edit':false},{'create':false},{'update':flase},{'delete':false},{'view':false}]\" end as scopes \n" +
            "from internal_permission i right join project p \n" +
            "on i.project_id=p.id \n" +
        "where \n" +
        "((user_id=:userId or user_id is null ) " +
        " and \n" +
        "(p.space_id=:spaceId))")
        .addScalar("projectId", LongType.INSTANCE)
        .addScalar("projectName", StringType.INSTANCE)
        .addScalar("permissionId", LongType.INSTANCE)
        .addScalar("userId", StringType.INSTANCE)
        .addScalar("scopes", StringType.INSTANCE)
        .setResultTransformer(new AliasToBeanResultTransformer( CustomMapDTO.class))
        .setParameter("spaceId",spaceId)
        .setParameter("userId",userId)
        .unwrap(org.hibernate.query.Query.class)
        .getResultList();
 类似资料:
  • 我正在开发一个使用HibernateSpring引导的应用程序。事实上,以前我用HibernateSpringmvc创建了一个项目,但现在我开始研究Spring引导。所以问题是我无法使用我在Springmvc中使用的hql查询获取数据。因为我不知道在Spring启动项目中在哪里写hql查询。 我尝试创建了一个类并扩展了spring-bootdao接口,并实现了我的方法,但没有获得正确的数据。 下面

  • 我有一个存储库,它返回一个

  • 我需要使用本机查询对2-3个表执行联合操作,并需要将结果映射到自定义对象中。由于JPA不支持UNION子句,所以JPA不可能实现同样的事情。 我听说过SqlResultSetMap,它在这种情况下有用吗? 如何以及在哪里使用这个,任何链接或其他东西?没有在谷歌上获得太多信息。

  • 我在这里创建了一个类似于教程的Web应用程序:https://spring.io/guides/tutorials/react-and-spring-data-rest/ . 我已经添加了后gresql数据库,一切正常。我有一个基本查询查找我的存储库中的By用户名(字符串名称),工作正常。我的问题是,由于某种原因我无法创建自定义查询,例如 . 假设我做了一个测试,我只想得到这个语句的值。我说的不能

  • 我想从JSON列中获取值,并在spring JPA中返回自定义DTO。 表结构 列包含年龄,例如 我想获取具有、和的用户列表。由于数据量可能很大,我创建了一个自定义DTO 下面是一个同样的例子: 实体: 结构: 结构: 启动Spring启动应用程序 警告|上下文初始化期间遇到异常-取消刷新尝试:org。springframework。豆。工厂UnsatifiedPendencyException:

  • 在我的数据库中,我有一个具有以下属性的表“CITA”:id,fecha\u hora,description,id\u empleado,id\u cliente。 我还有一个Spring JPA存储库: 我需要这个查询: 我的问题是我不知道我应该把它放在哪里来还给我像地图这样的东西 因为它不起作用: 编辑 如果我试图从我的REST控制器调用estadistic as(),我有一个错误。 这是我的