是否可以在选定实体未引用的表上使用 CriteriaBuilder
执行联接?由于 CriteriaBuilder.join()
需要属性名称作为参数,因此它似乎不起作用。
为了更清楚一点,原始查询如下所示:
选择车辆 v 左连接 VehicleStatus vs on v.id = vs.vehicleId
...
Vehicle
未定义与 VehicleStatus
的关系。目前不希望对数据库进行更改,但如果需要的话是可能的。
目前我拥有的代码
final Join<Vehicle, VehicleStatus> vs = vehicle.join("vs", JoinType.LEFT);
vs.on(cb.equal(vs.get("vehicleId"), vehicle.get("id")));
失败并出现java.lang.IllegalArgumentException:无法在此 ManagedType 上找到具有给定名称 [vs] 的属性
最佳答案
不,您需要映射关联才能使用 CriteriaBuilder
创建连接子句。
使用 Hibernate,您可以 join 2 unassociated entities在 JPQL 查询中。语法与 SQL 几乎相同。但它是 Hibernate 特定的功能,而不是 JPA 标准的一部分。
关于java - Criteria Builder JOIN 未引用的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54110001/