如何将Native sql查询转换为JPA

时间:2015-02-12 14:02:14

标签: java spring jpa sqlresultsetmapping

我使用sql结果集映射来映射本机查询的结果。但是我面临很多编译时问题。 告诉我,我在下面做的方法是否是相关的? 我的实体类: 实体类地点:

@EnableCaching
@Entity
@Table(name = "Table")
@NamedNativeQuery(  
        name = "findPlace",  
        query = "SELECT P.code,P.name,P.latitude,P.longitute," 
            +"111.045* DEGREES (ACOS(COS(RADIANS(latpoint))" 
            +"*COS (RADIANS(P.latitude))"
            +"*COS(RADIANS(longpoint) - RADIANS (P.longitute))"
            +" SIN (RADIANS (latpoint))"
            +"*SIN (RADIANS(P.latitude)))) As distance_in_km"
            +"FROM table P"
            +"JOIN("
            +"SELECT :latitude AS latpoint , :longitute AS longpoint)"
            +"AS p ON 1=1"
            +"ORDER BY distance_in_km"
            +"LIMIT 1", "locationResult")
@SqlResultSetMapping(name = "locationResult",  
columns = { @ColumnResult(name = "code"),  
            @ColumnResult(name = "name"),
            @ColumnResult(name = "latitude"),
            @ColumnResult(name = "longitute"),
            @ColumnResult(name = "distance_in_km")
})

public class Place {

    public Place() {
    }

    @Id
    @Column(name = "CODE")
    private String iata;
    @Column(name = "NAME")
    private String name;
    @Column(name = "PLACE_CODE")
    private String placeCode;
    @Column(name = "PLACE_NAME")
    private String placeName;
    @Column(name = "STATE_CODE")
    private String stateCode;
    @Column(name = "STATE_NAME")
    private String stateName;
    @Column(name = "TEST1")
    private boolean test;
    @Column(name = "TEST2")
    private boolean test2;
    @Column(name = "latitude")
    private boolean latitude;
    @Column(name = "longitute")
    private boolean longitute;

}

我的JPA存储库类:

@Repository
public interface PlaceRepository extends JpaRepository<Place, Long> {


     @Query(findPlace)
     Place findBylattitudeAndlongitute(@Param("latitude") String latitude ,@Param("longitute") String longitute );       
}

我正在开发基于spring jpa的应用程序,所以我在配置类中定义了所有jpa配置(实体管理器,事务等)。

帮我解决上述问题。

0 个答案:

没有答案