Java 如何使用联接在CriteriaUpdate中编写更新查询?
我正在尝试使用连接编写有关CriteriaUpdate的代码。 但是,在CriteriaUpdate中,连接不起作用。 然后我尝试使用如下子查询Java 如何使用联接在CriteriaUpdate中编写更新查询?,java,hibernate,jpql,Java,Hibernate,Jpql,我正在尝试使用连接编写有关CriteriaUpdate的代码。 但是,在CriteriaUpdate中,连接不起作用。 然后我尝试使用如下子查询 CriteriaBuilder userBuilder = deviceSession.getCriteriaBuilder(); CriteriaUpdate<Switch> deviceUpdate = userBuilder.createCriteriaUpdate(Switch.class);
CriteriaBuilder userBuilder = deviceSession.getCriteriaBuilder();
CriteriaUpdate<Switch> deviceUpdate = userBuilder.createCriteriaUpdate(Switch.class);
Root<Switch> deviceUpdateRoot = deviceUpdate.from(Switch.class);
Subquery<Switch> deviceSubquery = deviceUpdate.subquery(Switch.class);
Root<Switch> roomRoot = deviceSubquery.from(Switch.class);
Join<Switch, Rooms> join = roomRoot.join("room" ,JoinType.LEFT);
deviceUpdate.set(deviceUpdateRoot.get("displayName"),"SSS");
deviceUpdate.set(deviceUpdateRoot.get("device"),"device");
deviceUpdate.set(deviceUpdateRoot.get("operation"),"operation");
***deviceUpdate.set(join.get("roomId"),device.getRoomId());***
deviceUpdate.where(userBuilder.equal(deviceUpdateRoot.get("deviceName"),device.getDeviceName()));
int returnValue = deviceSession.createQuery(deviceUpdate).executeUpdate();
CriteriaBuilder userBuilder=deviceSession.getCriteriaBuilder();
CriteriaUpdate deviceUpdate=userBuilder.createCriteriaUpdate(Switch.class);
Root deviceUpdateRoot=deviceUpdate.from(Switch.class);
子查询deviceSubquery=deviceUpdate.Subquery(Switch.class);
Root roomRoot=deviceSubquery.from(Switch.class);
Join-Join=roomRoot.Join(“房间”,JoinType.LEFT);
deviceUpdate.set(deviceUpdateRoot.get(“displayName”),“SSS”);
deviceUpdate.set(deviceUpdateRoot.get(“设备”),“设备”);
deviceUpdate.set(deviceUpdateRoot.get(“操作”),“操作”);
***deviceUpdate.set(join.get(“roomId”),device.getRoomId()***
其中(userBuilder.equal(deviceUpdateRoot.get(“deviceName”),device.getDeviceName());
int returnValue=deviceSession.createQuery(deviceUpdate.executeUpdate();
但是我得到了类似于org.hibernate.hql.internal.ast.InvalidPathException的错误:无效路径:“generatedAlias1.roomId”
你能从这个isuue得到帮助吗。嗨!据我所知,不能在一条语句中更新多个表。我说的不是JPA,而是SQL本身。我建议您将这个更新查询构建为SQL,并尝试在数据库中运行它,以检查它是否工作。