spring-data-jpa - 使用弹簧数据搜索嵌套对象,非法尝试取消引用路径源
问题描述
我使用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]
解决方案
我认为,在您的情况下,最好自己提供查询,例如:
@Query("select h from HOV h join h.vehicleType vt left join vt.vehicles v where v.id = ?1")
List<HOV> findWithQuery(Integer vehicleId);
推荐阅读
- javascript - 使用 JavaScript 的 Selenium Webdriver,如何使用 chrome.exe 的特定路径启动 Chrome?
- python - argparser.print_help() 没有打印完整的消息
- r - 尝试使用 R 对 MS Dynamics CRM 2016 WebApi 进行身份验证
- sql - 如何将比率四舍五入到 Postgresql 中的最低整数值?
- traefik - Traefik V2 获取通配符证书
- javascript - 如何记录和更新剪刀石头布游戏的输赢历史?
- cmake - 尝试在 Ubuntu 上配置 CMake 工具链
- rust - 有没有办法在 Rust 中删除静态生命周期对象?
- c - 小数点后的数字在排序后消失
- java - Mockito 模拟数据库调用