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

将本机查询JPA的resultset设置为POJO引发空指针异常

孙昂然
2023-03-14

我想将resultset列表转换为entity类。我的本机查询:

 @Query("select type,name,latitude,longitute,111.045* DEGREES (ACOS(COS(RADIANS(:latitude))*COS (RADIANS(latitude))*COS(RADIANS(:longitute) - RADIANS (longitute))"
            + "+SIN (RADIANS (:latitude))*SIN (RADIANS(latitude)))) As distance_in_km from Place ORDER BY distance_in_km ")
     List<Object[]> findBylattitudeAndlongitute(@Param("latitude") double latitude ,@Param("longitute") double longitute );
@EnableCaching
@Entity
@Table(name = "PLACEDETAILS_H")
public class Place {

    public Place() {
    }   
    private String type;
    private String name;
    private String Code;
    private String Name;
    private String Code1;   
    private String Name2;
    private double latitude;
    private double longitute;

}
 List<Object[]>  places = Repository.findBylattitudeAndlongitute(latitude, longitute);  
Place place = null;
             for (Object[] pla:places)
             {
                 place.setType((String) pla[0]);
          place.setName((String) pla[1]);   
             }

共有1个答案

孔海超
2023-03-14

>

  • 您需要添加以下瞬态列:

    @Transient
    private Double distance_in_km;
    

    您需要将Spring Data@query更改为Hibernate本地查询:

    String sql = "select type as {p.type}, name as {p.name}, latitude as {p.latitude}, longitute as {p.longitute},111.045* DEGREES (ACOS(COS(RADIANS(:latitude))*COS (RADIANS(latitude))*COS(RADIANS(:longitute) - RADIANS (longitute))"
                + "+SIN (RADIANS (:latitude))*SIN (RADIANS(latitude)))) As {p.distanceInKm} from Place p ORDER BY {p.distanceInKm} ";
    
    List<Place> places = (List<Place>) session.createSQLQuery(sql)
    .setParameter("latitude", latitude)
    .setParameter("longitute", longitute)
    .addEntity("p", Place.class).list();
    

  •  类似资料:
    • 当我们尝试用Null值获取数据时 IN子句获得空指针异常。 也许是因为这个。 在数据库中,我们可以提供null in IN子句。 jooq中存在一个“无法修复”的问题https://github.com/jOOQ/jOOQ/issues/3867 有一些替代方案: 在输入前检查null(在我的情况下,这是一个非常大的select语句) 所以如果我想让这成为可能,还有其他的解决方法吗。 注:类似的情

    • 问题内容: 我有一个实体和一个实体。关系的定义如下: 现在,当我删除角色时,需要从具有该角色的所有用户中删除该角色。通常,您可以通过查找具有该角色的所有用户,从列表中删除该角色并保存用户来执行类似的操作。但是,当可能有超过一百万的用户时,我不想遍历应用程序中的这么多实体。因此,我想使用本机查询从联接表中删除行。我尝试将其添加到我的存储库中: 但是,当我这样做时,我在日志中看到以下内容: 我不明白在

    • 问题内容: 这是我的代码部分: 有时可以为null(Date类对象)。如果为null,则会引发以下异常: 如何使此代码正常工作并将null值持久保存到数据库中? 问题答案: 您正在使用postgresql(已经在堆栈中进行了说明),并且可能正在使用Hibernate,几乎可以肯定会遇到此问题:PostgreSQL JDBCNull String作为bytea 因此,这意味着转义到Hibernate

    • 第一个示例:“源代码”https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/process_function.html“” 我正在尝试重写KeyedProcessFunction类的processElement()。ProcessElement有3个参数,其中一个参数是上下文对象。当我试图从上下文对象

    • 我正在尝试通过Maven运行cucumber+testng+selenium。 当我在Eclipse中通过TestNG测试运行它时,它工作得很好,但当我使用mvn测试时,它会抛出空指针异常 我是不是漏掉了什么?

    • 我是一个Spring新手,面临着Spring Security性的问题。 我正在尝试实现一个自定义UserDetailsService,用于用户检索,并在访问UserService对象时获得一个空指针异常。我正在自动连接这个对象。当在其他控制器和服务方法上完成时,autowirng可以正常工作,但是由于某些原因,它在这里不工作,因此当访问autowired对象(UserService)时,我会得到