首页 > 解决方案 > 使用弹簧数据搜索嵌套对象,非法尝试取消引用路径源

问题描述

我使用spring data jpa,我有这些类(每个都有id...不显示)

public class HOV{

    @ManyToOne(optional = false, fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    @JoinColumn(name = "vehicle_type_id")
    private VehicleTypes vehicleType;
    ...
}

public class VehicleTypes{

    @OneToMany(mappedBy = "vehicleType")
    private List<Vehicles> vehicles = new ArrayList<>();

}

所以在hov存储库中,我尝试按车辆ID搜索

List<HOV> findByVehicleTypeVehiclesId(Integer id);

原因:org.springframework.beans.factory.BeanCreationException:创建名为“hOVRepository”的bean时出错:调用init方法失败;嵌套异常是 java.lang.IllegalArgumentException:无法为方法 public abstract java.util.List com.lcm.repository.HOVRepository.findByVehicleTypeVehiclesId(java.lang.Integer) 创建查询!非法尝试取消引用基本类型的路径源 [null.vehicleType.vehicles]

标签: spring-data-jpa

解决方案


我认为,在您的情况下,最好自己提供查询,例如:

@Query("select h from HOV h join h.vehicleType vt left join vt.vehicles v where v.id = ?1")
List<HOV> findWithQuery(Integer vehicleId);

推荐阅读