java - Criteria Builder JOIN 未引用的表

标签 java jpa join

是否可以在选定实体未引用的表上使用 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/

相关文章:

mysql - 使用什么样的查询来获得这个(左连接不起作用)

java - 如何在同一个查询中同时将两个Arraylist值插入到数据库表中

java - 在 Java 中调用迭代器方法时使用菱形符号语法

java - 实现通用 CRUD Controller 的模式

java - 如何使用 Hibernate 从非所有者端删除 @ManyToMany 关联中的关系?

mysql - 如何连接 5 个不同表中的记录?

java - Android Studio Value 不会传递给其他 Activity

java 使用可完成的 Future 发送异常

java - 如何为不同实体创建通用方法

MYSQL 根据 where 子句和 Join 更新值