我试图改变的hibernate条件查询看起来像这样
Criteria crit =
session.createCriteria(device.class)
.createCriteria("deviceConfigurationTemplate")
.createCriteria("deviceModel");
我想简单地改变它以使用JPA CriteriaQueries . 我遇到的问题是javax.persistence如何创建一个带有多个被称为实体的实体的查询作为字符串传入 . 我想使用JPA根标准,并使用criteriaQuery这样多选它们
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Device> cq = cb.createQuery(Device.class);
Root<DeviceModel> model = cq.from(DeviceModel.class);
Root<"deviceConfigurationTemplate"> model2 =
cq.from("deviceConfigurationTemplate");
cq.multiselect(model);
这里的问题是你不能将字符串作为参数传递给根对象 . 我不确定如何创建这样的查询 .
1 回答
为什么要尝试传递字符串作为类型参数?一旦你加入一个关联,结果
Join
或Path
应该用关联的目标类型参数化 .查询是否应该等同于
SELECT d.deviceConfigurationTemplate.deviceModel FROM Device d
?如果是这样,等效的Criteria查询将是:键入更加明确:
您也可以使用
from.join()
代替 .