gpt4 book ai didi

java - Hibernate - getHibernateTemplate 查询中重复参数

转载 作者:行者123 更新时间:2023-11-29 12:15:52 24 4
gpt4 key购买 nike

String query = "SELECT Vehicle, ( 3959 * acos( cos( radians(37) ) * cos( radians( Vehicle.lat ) ) * cos( radians( Vehicle.lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( Vehicle.lat ) ) ) ) AS distance FROM VehicleDetails Vehicle";

Object[] params = {lat,lng};

List<VehicleDetails> vehicledata = getHibernateTemplate().find(query,params);

两个参数“lat”和“lng”。查询中的数字“37”是“lat”值。该值在查询中重复两次。参数使用“?”分配但在这种情况下,第一个“?”将是“lat”和第二个“?”将是“lng”,还有另一个第三个数字。如何在查询中分配“lat”参数两次?

最佳答案

就像这样:

String query = "SELECT Vehicle, ( 3959 * acos( cos( radians(37) ) * cos( radians( ? ) ) * cos( radians( ? ) - radians(-122) ) + sin( radians(37) ) * sin( radians( ? ) ) ) ) AS distance FROM VehicleDetails Vehicle";

Object[] params = {lat,lng, lat};

List<VehicleDetails> vehicledata = getHibernateTemplate().find(query,params);

或使用命名参数

 String query = "SELECT Vehicle, ( 3959 * acos( cos( radians(37) ) * cos( radians( :lat ) ) * cos( radians( :lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( :lat ) ) ) ) AS distance FROM VehicleDetails Vehicle";

List<VehicleDetails> vehicledata = getHibernateTemplate().findByNamedParam(query,{'lat','lng'},{lat, lng});

有限制的版本:

Query q = getHibernateTemplate().getSession().createQuery(query );
q.setFirstResult(0); // modify this to adjust paging
q.setMaxResults(20);

// For named parameters
q.setParamter("lat",lat);
q.setParamter("lng",lng);

// For non named parameters
q.setParamter(0,lat);
q.setParamter(1,lng);
q.setParamter(2,lat);
List<VehicleDetails> vehicledata = q.list();

关于java - Hibernate - getHibernateTemplate 查询中重复参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29815706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com